Search Exchange

Search All Sites

Nagios Live Webinars

Let our experts show you how Nagios can help your organization.

Contact Us

Phone: 1-888-NAGIOS-1
Email: sales@nagios.com

Login

Remember Me

Directory Tree

check_domain_jwhois.sh

Rating
2 votes
Favoured:
0
Last Release Date
2014-01-17
Compatible With
  • Nagios 1.x
  • Nagios 2.x
  • Nagios 3.x
Hits
28075
Nagios CSP

Meet The New Nagios Core Services Platform

Built on over 25 years of monitoring experience, the Nagios Core Services Platform provides insightful monitoring dashboards, time-saving monitoring wizards, and unmatched ease of use. Use it for free indefinitely.

Monitoring Made Magically Better

  • Nagios Core on Overdrive
  • Powerful Monitoring Dashboards
  • Time-Saving Configuration Wizards
  • Open Source Powered Monitoring On Steroids
  • And So Much More!
Bash script plugin to alert on expiring domain names. Uses jwhois (developed on CentOS). Warning at 30 days, critical at 14.
##### Created by Joe McShinsky #####

#! /bin/bash

if [ $# -ne 1 ]
then
echo "Usage: $0 [domain name]"
exit 1
fi

getDate=`jwhois $1 | grep Expir`

expireDate=`echo "$getDate" | cut -d":" -f2-22 | cut -c1-11`

currentDate=`date +%s`

expireDate=`date +%s --date="$expireDate"`

### Difference between expiration and right now
timeDiffSec=`expr $expireDate - $currentDate`

### Convert to days (86400 seconds in a day)
timeDiffDays=`expr $timeDiffSec / 86400`

if [ $timeDiffDays -lt 15 ]
then
echo "CRITICAL: $timeDiffDays Left Until Domain Expiration"
exit 2
fi

if [ $timeDiffDays -lt 31 ]
then
echo "WARNING: $timeDiffDays Left Until Domain Expiration"
exit 1
fi

if [ $timeDiffDays -gt 30 ]
then
echo "OK: $timeDiffDays Left Until Domain Expiration"
exit 0
fi

echo "Oops! Check the script for any required updates"
exit 1
Reviews (2)
Adding a few lines to better parse the expiration date.. it's a bit crude, but it's works

######
#! /bin/bash

if [ $# -ne 1 ]
then
echo "Usage: $0 [domain name]"
exit 1
fi

getDate=`jwhois $1 | grep Expir`

FIRST_WORD=`echo $getDate | cut -d " " -f1`

case $FIRST_WORD in
Registrar) expireDate=`echo $getDate | cut -d " " -f5`;;
Registry) expireDate=`echo $getDate | cut -d " " -f4 | cut -d "T" -f1`;;
Domain) expireDate_1=`echo $getDate | tr -s \ | cut -d ":" -f2-22 | sed -e 's/\S*\(:\)\S*//g' -e 's/ GMT //g'`
expireDate=`date -d "$expireDate_1" +%Y-%m-%d`;;
esac

currentDate=`date +%s`

expireDate=`date +%s --date="$expireDate"`

### Difference between expiration and right now
timeDiffSec=`expr $expireDate - $currentDate`

### Convert to days (86400 seconds in a day)
timeDiffDays=`expr $timeDiffSec / 86400`

if [ $timeDiffDays -lt 15 ]
then
echo "CRITICAL: $timeDiffDays Left Until Domain Expiration"
exit 2
fi

if [ $timeDiffDays -lt 31 ]
then
echo "WARNING: $timeDiffDays Left Until Domain Expiration"
exit 1
fi

if [ $timeDiffDays -gt 30 ]
then
echo "OK: $timeDiffDays Left Until Domain Expiration"
exit 0
fi
The first domain expiration plugin I managed to work somehow. But still doesn't work for all domains. It seems to be not plugin, but jWhois problem.

$ ./check_jwh.sh microsoft.com
CRITICAL: 0 Left Until Domain Expiration
$

$ jwhois microsoft.com
[Cached]
[whois.markmonitor.com]
$