Skip to content

Instantly share code, notes, and snippets.

@zz
Forked from myaaaaa-chan/get-domain-expire.sh
Created May 10, 2016 03:12
Show Gist options
  • Save zz/611a8aa61271619d4a46d6f99c38a846 to your computer and use it in GitHub Desktop.
Save zz/611a8aa61271619d4a46d6f99c38a846 to your computer and use it in GitHub Desktop.
Zabbixでドメインの有効期限を監視する ref: http://qiita.com/myaaaaa_chan/items/e1e7313cf77eca587574
#!/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
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