Author: glen                         Date: Sun Aug 30 08:46:58 2009 GMT
Module: packages                      Tag: HEAD
---- Log message:
- fix  bashism, simplify

---- Files affected:
packages/nagios-plugin-check_domain:
   check_domain (1.2 -> 1.3) 

---- Diffs:

================================================================
Index: packages/nagios-plugin-check_domain/check_domain
diff -u packages/nagios-plugin-check_domain/check_domain:1.2 
packages/nagios-plugin-check_domain/check_domain:1.3
--- packages/nagios-plugin-check_domain/check_domain:1.2        Sun Aug 30 
10:28:00 2009
+++ packages/nagios-plugin-check_domain/check_domain    Sun Aug 30 10:46:53 2009
@@ -1,7 +1,5 @@
-#!/bin/bash
-
-PROGPATH=`echo $0 | /bin/sed -e 's,[\\/][^\\/][^\\/]*$,,'`
-
+#!/bin/sh
+PROGPATH=${0%/*}
 . $PROGPATH/utils.sh
 
 # Default values (days):
@@ -9,78 +7,87 @@
 warning=30
 
 # Parse arguments
-args=`getopt -o hd:w:c:P: --long help,domain:,warning:,critical:,path: -u -n 
$0 -- "$@"` 
-[ $? != 0 ] && echo "$0: Could not parse arguments" && echo "Usage: $0 -h | -d 
<domain> [-c <critical>] [-w <warning>]" && exit
+args=$(getopt -o hd:w:c:P: --long help,domain:,warning:,critical:,path: -u -n 
$0 -- "$@")
+if [ $? != 0 ]; then
+       echo "$0: Could not parse arguments"
+       echo "Usage: $0 -h | -d <domain> [-c <critical>] [-w <warning>]"
+       exit 1
+fi
 set -- $args
 
-while true ; do
-        case "$1" in
-                -c|--critical) critical=$2;shift 2;;
-                -w|--warning)  warning=$2;shift 2;;
-            -d|--domain)   domain=$2;shift 2;;
-            -P|--path)     whoispath=$2;shift 2;;
-            -h|--help)     echo "check_domain - v1.01"
-                               echo "Copyright (c) 2005 Tomàs Núñez Lirola 
<[email protected]> under GPL License"
-                               echo "This plugin checks the expiration date of 
a domain name." 
-                               echo ""
-                               echo "Usage: $0 -h | -d <domain> [-c 
<critical>] [-w <warning>]"
-                               echo "NOTE: -d must be specified"
-                               echo ""
-                               echo "Options:"
-                               echo "-h"
-                               echo "     Print detailed help"
-                               echo "-d"
-                               echo "     Domain name to check"
-                               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 domain.tld -w 30 -c 10"
-                               echo ""
-                               exit;;
-             --) shift; break;;
-                *)  echo "Internal error!" ; exit 1 ;;
-        esac
+die() {
+       local rc=$1
+       local msg=$2
+       echo $msg
+       exit $rc
+}
+
+while :; do
+       case "$1" in
+               -c|--critical) critical=$2; shift 2;;
+               -w|--warning)  warning=$2; shift 2;;
+               -d|--domain)   domain=$2; shift 2;;
+               -P|--path)     whoispath=$2; shift 2;;
+               -h|--help)     echo "check_domain - v1.2"
+                                          echo "Copyright (c) 2005 Tomàs Núñez 
Lirola <[email protected]>, 2009 Elan Ruusamäe <[email protected]>"
+                                          echo "under GPL License"
+                                          echo ""
+                                          echo "This plugin checks the 
expiration date of a domain name."
+                                          echo ""
+                                          echo "Usage: $0 -h | -d <domain> [-c 
<critical>] [-w <warning>]"
+                                          echo "NOTE: -d must be specified"
+                                          echo ""
+                                          echo "Options:"
+                                          echo "-h"
+                                          echo "     Print detailed help"
+                                          echo "-d"
+                                          echo "     Domain name to check"
+                                          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 domain.tld -w 30 -c 
10"
+                                          echo ""
+                                          exit;;
+               --) shift; break;;
+               *)  die $STATE_UNKNOWN "Internal error!";;
+       esac
 done
 
-[ -z $domain ] && echo "UNKNOWN - There is no domain name to check" && exit 
$STATE_UNKNOWN
+if [ -z $domain ]; then
+       die $STATE_UNKNOWN "UNKNOWN - There is no domain name to check"
+fi
 
 # Looking for whois binary
 if [ -z $whoispath ]; then
-      type whois &> /dev/null || error="yes"
-      [ ! -z $error ] && echo "UNKNOWN - Unable to find whois binary in your 
path. Is it installed? Please specify path." && exit $STATE_UNKNOWN
+       type whois > /dev/null 2>&1 || error="yes"
+       [ -z "$error" ] || die $STATE_UNKNOWN "UNKNOWN - Unable to find whois 
binary in your path. Is it installed? Please specify path."
 else
-      [ ! -x "$whoispath/whois" ] && echo "UNKNOWN - Unable to find whois 
binary, you specified an incorrect path" && exit $STATE_UNKNOWN
+       [ -x "$whoispath/whois" ] || die $STATE_UNKNOWN "UNKNOWN - Unable to 
find whois binary, you specified an incorrect path"
 fi
 
 # Calculate days until expiration
-country=${domain: -3}
+country=$(awk -vd="$domain" 'BEGIN{print substr(d, length(d) - 2); exit}')
+
+if [ "$country" = ".ru" ]; then
+       expiration=$(whois $domain | awk '/paid-till:/{split($2, a, "."); 
printf("%s-%s-%s\n", a[1], a[2], a[3])}')
+else
+       expiration=$(whois $domain | awk '/Expiration Date:/{print $3}')
+fi
 
-if [ "$country" = ".ru" ]
-       then
-       ruexpiration=`whois $domain |grep "paid-till:"| awk -F"paid-till:" 
'{print $2}'|cut -f 1`
-               year=${ruexpiration: 2:4}
-               month=${ruexpiration: 7:2}
-               day=${ruexpiration: -2}
-               month_string=`date +%b -d"$year$month$day"`
-               expiration="$day-$month_string-$year"
-       else
-               expiration=`whois $domain |grep "Expiration Date:"| awk 
-F"Date:" '{print $2}'|cut -f 1`
-       fi
-
-expseconds=`date +%s --date="$expiration"`
-nowseconds=`date +%s`
-((diffseconds=expseconds-nowseconds))
+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 $STATE_UNKNOWN
-[ $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
+[ -z "$expiration" ] && die $STATE_UNKNOWN "UNKNOWN - Domain doesn't exist or 
no WHOIS server available."
+[ $expdays -lt 0 ] && die $STATE_CRITICAL "CRITICAL - Domain expired on 
$expiration"
+[ $expdays -lt $critical ] && die $STATE_CRITICAL "CRITICAL - Domain will 
expire in $expdays days"
+[ $expdays -lt $warning ]&& die $STATE_WARNING "WARNING - Domain will expire 
in $expdays days"
 
 # No alarms? Ok, everything is right.
 echo "OK - Domain will expire in $expdays days"
================================================================

---- CVS-web:
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/nagios-plugin-check_domain/check_domain?r1=1.2&r2=1.3&f=u

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to