-
-
Save zz/611a8aa61271619d4a46d6f99c38a846 to your computer and use it in GitHub Desktop.
Zabbixでドメインの有効期限を監視する ref: http://qiita.com/myaaaaa_chan/items/e1e7313cf77eca587574
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
PROGPATH=`echo $0 | /bin/sed -e 's,[\\/][^\\/][^\\/]*$,,'` | |
#. $PROGPATH/utils.sh | |
# Default values (days): | |
critical=30 | |
warning=60 | |
whois="/usr/bin/whois" | |
host="" | |
usage() { | |
echo "check_domain - v1.01p1" | |
echo "Copyright (c) 2005 Tom〓s N〓〓ez Lirola <[email protected]> under GPL License" | |
echo "Modified by MATSUU Takuto <[email protected]>" | |
echo "Modified by Tateoka Mamoru <[email protected]>" | |
echo "" | |
echo "This plugin checks the expiration date of a domain name." | |
echo "" | |
echo "Usage: $0 -h | -d <domain> [-W <command>] [-H <host>] [-c <critical>] [-w <warning>]" | |
echo "NOTE: -d must be specified" | |
echo "" | |
echo "Options:" | |
echo "-h" | |
echo " Print detailed help" | |
echo "-d DOMAIN" | |
echo " Domain name to check" | |
echo "-H HOST" | |
echo " Connect to server HOST" | |
echo "-W COMMAND" | |
echo " Use COMMAND instead of whois" | |
echo "-w" | |
echo " Response time to result in warning status (days)" | |
echo "-c" | |
echo " Response time to result in critical status (days)" | |
echo "" | |
echo "This plugin will use whois service to get the expiration date for the domain name. " | |
echo "Example:" | |
echo " $0 -d example.org -w 30 -c 10" | |
echo " $0 -d example.jp/e -H whois.jprs.jp -w 30 -c 10" | |
echo " $0 -d example.jp -W /usr/bin/jwhois -w 30 -c 10" | |
echo "" | |
} | |
# Parse arguments | |
args=`getopt -o hd:w:c:W:H: --long help,domain:,warning:,critical:,whois:,host: -u -n $0 -- "$@"` | |
[ $? != 0 ] && echo "$0: Could not parse arguments" && echo "Usage: $0 -h | -d <domain> [-W <comman>] [-c <critical>] [-w <warning>]" && exit | |
set -- $args | |
while true ; do | |
case "$1" in | |
-h|--help) usage;exit;; | |
-d|--domain) domain=$2;shift 2;; | |
-w|--warning) warning=$2;shift 2;; | |
-c|--critical) critical=$2;shift 2;; | |
-W|--whois) whois=$2;shift 2;; | |
-H|--host) host="-h $2";shift 2;; | |
--) shift; break;; | |
*) echo "Internal error!" ; exit 1 ;; | |
esac | |
done | |
[ -z $domain ] && echo "UNKNOWN - There is no domain name to check" && exit $STATE_UNKNOWN | |
# Looking for whois binary | |
if [ ! -x $whois ]; then | |
echo "UNKNOWN - Unable to find whois binary in your path. Is it installed? Please specify path." | |
exit $STATE_UNKNOWN | |
fi | |
# Calculate days until expiration | |
TLDTYPE=`echo ${domain##*.} | tr '[A-Z]' '[a-z]'` | |
#echo "host:$domain" | |
if [ "${TLDTYPE}" == "in" -o "${TLDTYPE}" == "info" -o "${TLDTYPE}" == "org" ]; then | |
expiration=`$whois $host $domain | awk '/Expiration Date:/ { print $2 }' |cut -d':' -f2` | |
elif [ "${TLDTYPE}" == "net" ]; then | |
expiration=`$whois $host $domain | awk '/Expiration Date/ {print $5,$6}'` | |
elif [ "${TLDTYPE}" == "cc" ]; then | |
expiration=`$whois $host $domain | awk '/Expiration Date:/ {print $5}' |cut -d'T' -f1` | |
elif [ "${TLDTYPE}" == "com" ]; then | |
expiration=`$whois $host $domain | awk '/Expiration Date:/ {print $5}'` | |
elif [ "${TLDTYPE}" == "net" ]; then | |
expiration=`$whois $host $domain | awk '/Domain Expiration Date:/ { print $6"-"$5"-"$9 }'` | |
elif [ "${TLDTYPE}" == "sc" ]; then | |
expiration=`$whois -h whois2.afilias-grs.net $host $domain | awk '/Expiration Date:/ { print $2 }' | awk -F : '{ print $2 }'` | |
elif [ "${TLDTYPE}" == "jp" -o "${TLDTYPE}" == "jp/e" -o "${TLDTYPE}" == "am" ]; then | |
expiration=`$whois $host $domain | awk '/Expires/ { print $NF }'` | |
if [ -z $expiration ]; then | |
expiration=`$whois $host $domain | awk '/State/ { print $NF }' | tr -d \(\)` | |
fi | |
else | |
expiration=`$whois $host $domain | awk '/Expiration/ { print $NF }'` | |
fi | |
#echo $expiration | |
expseconds=`date +%s --date="$expiration"` | |
nowseconds=`date +%s` | |
((diffseconds=expseconds-nowseconds)) | |
expdays=$((diffseconds/86400)) | |
# Trigger alarms if applicable | |
#[ -z "$expiration" ] && echo "UNKNOWN - Domain doesn't exist or no WHOIS server available." && exit | |
#[ $expdays -lt 0 ] && echo "CRITICAL - Domain expired on $expiration" && exit $STATE_CRITICAL | |
#[ $expdays -lt $critical ] && echo "CRITICAL - Domain will expire in $expdays days" && exit $STATE_CRITICAL | |
#[ $expdays -lt $warning ]&& echo "WARNING - Domain will expire in $expdays days" && exit $STATE_WARNING | |
# No alarms? Ok, everything is right. | |
#echo "OK - Domain will expire in $expdays days" | |
#exit $STATE_OK | |
echo $expdays | |
#echo 30 | |
exit $STATE_OK |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
UserParameter=get_domain_expire[*],/path/to/get-domain-expire.sh -d $1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment