8e391f7ee6fed2c8c9a25b655a89bb9df5842cee
Benjamin Renard Initial commit

Benjamin Renard authored 13 years ago

1) #!/bin/bash
2) 
3) WARN=5
4) CRIT=1
5) DOMAIN=$1
6) DEBUG=0
7) [ "$2" == "-d" ] && DEBUG=1
8) 
9) TLD="`echo $DOMAIN|sed 's/^.*\.\([^\.]*\)$/\1/g'`"
10) [ $DEBUG -eq 1 ] && echo "TLD : $TLD"
11) 
12) WHOIS=`whois $DOMAIN`
13) RET=$?
14) 
15) [ $DEBUG -eq 1 ] && echo "Whois return :" && echo -e "$WHOIS"
16) 
Benjamin Renard Fix .com and .net check

Benjamin Renard authored 6 years ago

17) if [ $RET -ne 0 -a "$TLD" != "net" -a "$TLD" != "com" ]
Benjamin Renard Initial commit

Benjamin Renard authored 13 years ago

18) then
19) 	echo "UNKNOWN : Impossible to get expiration date."
20) 	exit 3
21) fi
22) 
23) case $TLD in
Benjamin Renard Fix .fr TLD and add other A...

Benjamin Renard authored 6 years ago

24) 	fr|re|pm|tf|yt|wf)
25) 		EXTXT=`echo -e "$WHOIS"|egrep "^Expiry Date"|tail -n 1`
26) 		[ $DEBUG -eq 1 ] && echo "Whois expire date : $EXTXT"
27) 
28) 		EXDATE=`echo $EXTXT|sed 's/ *[^:]*: *\(.*\)$/\1/'`
29) 		[ $DEBUG -eq 1 ] && echo "Expire date (in french format) : $EXDATE"
30) 
31) 		D=$( echo $EXDATE|cut -d'/' -f 1 )
32) 		M=$( echo $EXDATE|cut -d'/' -f 2 )
33) 		Y=$( echo $EXDATE|cut -d'/' -f 3 )
34) 		[ $DEBUG -eq 1 ] && echo "Parse expire date : Y=$Y / M=$M / D=$D"
35) 
36) 		EXTIME=`date +%s -d"$Y-$M-$D"`
37) 		[ $DEBUG -eq 1 ] && echo "Expire time : $EXTIME"
Benjamin Renard Initial commit

Benjamin Renard authored 13 years ago

38) 	;;
Benjamin Renard Added specific case for dot...

Benjamin Renard authored 12 years ago

39) 	be)
Benjamin Renard Changed status check for cT...

Benjamin Renard authored 12 years ago

40) 		STATUS="`echo -e "$WHOIS"|grep "^Status:"|sed 's/Status:[ \t]*//'`"
Benjamin Renard Added specific case for dot...

Benjamin Renard authored 12 years ago

41) 		[ $DEBUG -eq 1 ] && echo "Status : $STATUS"
42) 		SINCE="`echo -e "$WHOIS"|grep "^Registered:"|sed 's/^Registered: *//'`"
43) 		[ $DEBUG -eq 1 ] && echo "Since : $SINCE"
Benjamin Renard Changed status check for cT...

Benjamin Renard authored 12 years ago

44) 		if [ "$STATUS" != "REGISTERED" -a "$STATUS" != "NOT AVAILABLE" ]
Benjamin Renard Added specific case for dot...

Benjamin Renard authored 12 years ago

45) 		then
Benjamin Renard Changed status check for cT...

Benjamin Renard authored 12 years ago

46) 			echo "CRITICAL : $DOMAIN status is not REGISTERED or NOT AVAILABLE (value : $STATUS)"
Benjamin Renard Added specific case for dot...

Benjamin Renard authored 12 years ago

47) 			exit 2
48) 		else
49) 			echo "OK : $DOMAIN registered since $SINCE"
50) 			exit 0
51) 		fi
52) 	;;
Benjamin Renard Added specific case for dot...

Benjamin Renard authored 12 years ago

53) 	es)
54) 		echo "UNKNOWN : Dot ES TLD has no whois server. Check domain $DOMAIN is not possible."
55) 		exit 3
56) 	;;
Benjamin Renard Added specific case for dot...

Benjamin Renard authored 11 years ago

57) 	eu)
58) 		if [ ! -n "$2" ]
59) 		then
60) 			echo "UNKNOWN : Dot EU TLD not provide expire date in WHOIS result. You can provide manually expiration date in second parameter."
61) 			exit 3
62) 		fi
63) 	
64) 		if [ $( echo -e "$WHOIS"|grep -c "AVAILABLE" ) -gt 0 ]
65) 		then
66) 			echo "CRITICAL - Domain $DOMAIN not registred !"
67) 			exit 2
68) 		fi
69) 
70) 		EXDATE=$2
71) 		EXTIME=$( date +%s --date=$2 )
72) 		if [ $? -ne 0 ]
73) 		then
74) 			echo "UNKNOWN : Expire date provide not recognized. Ex : YYYYMMDD"
75) 		fi
76) 	;;
Benjamin Renard Initial commit

Benjamin Renard authored 13 years ago

77) 	*)
Benjamin Renard Add filter on the first lin...

Benjamin Renard authored 10 years ago

78) 		EXTXT=`echo -e "$WHOIS"|grep "^expires:"|tail -n 1`
Benjamin Renard Initial commit

Benjamin Renard authored 13 years ago

79) 		[ $DEBUG -eq 1 ] && echo "expire result format 1 : $EXTXT"
Benjamin Renard Fix .org TLD check

Benjamin Renard authored 6 years ago

80) 		[ ! -n "$EXTXT" ] && EXTXT=`echo -e "$WHOIS"|egrep "([^:]*Expiration Date|Renewal date|Registry Expiry Date)"|head -n 1`
Benjamin Renard Initial commit

Benjamin Renard authored 13 years ago

81) 		[ $DEBUG -eq 1 ] && echo "expire result format 2 : $EXTXT"
82) 		
83) 		[ $DEBUG -eq 1 ] && echo "Whois expire date : $EXTXT"
84) 		
85) 		
86) 		
87) 		EXDATE=`echo $EXTXT|sed 's/ *[^:]*: *\(.*\)$/\1/'`
88) 		[ $DEBUG -eq 1 ] && echo "Expire date : $EXDATE"
89) 		EXTIME=`date +%s -d"$EXDATE"`
Benjamin Renard Fixed expire text to date c...

Benjamin Renard authored 10 years ago

90) 		[ $? -ne 0 ] && EXDATE=`echo "$EXDATE"|sed 's/Z$//'` && EXTIME=`date +%s -d"$EXDATE"`
Benjamin Renard Initial commit

Benjamin Renard authored 13 years ago

91) 		[ $DEBUG -eq 1 ] && echo "Expire time : $EXTIME"
92) esac
93) 
94) CURTIME=`date +%s`
95) [ $DEBUG -eq 1 ] && echo "Current time : $CURTIME"
96) 
97) let DIFF=EXTIME-CURTIME
98) [ $DEBUG -eq 1 ] && echo "Diff time : $DIFF"
99) let nb=DIFF/86400
100) [ $DEBUG -eq 1 ] && echo "Nb day(s) : $nb"
101) 
Benjamin Renard Added specific case for dot...

Benjamin Renard authored 11 years ago

102) if [ "$nb" -le $CRIT ]
Benjamin Renard Initial commit

Benjamin Renard authored 13 years ago

103) then
Benjamin Renard Added specific case for dot...

Benjamin Renard authored 11 years ago

104) 	if [ "$nb" -lt 0 ]
Benjamin Renard Initial commit

Benjamin Renard authored 13 years ago

105) 	then
106) 		let nb=nb*-1
107) 		echo "CRITICAL : $DOMAIN is expired since $nb day(s) !"
108) 	else
109) 		echo "CRITICAL : $DOMAIN expire in $nb day(s) !"
110) 	fi
111) 	exit 2
Benjamin Renard Added specific case for dot...

Benjamin Renard authored 11 years ago

112) elif [ "$nb" -le $WARN ]