D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
lib64
/
nagios
/
plugins
/
Filename :
check_domain_expiration_teams.sh
back
Copy
#!/bin/bash CRITICAL_DAYS=10 TEAMS_URL="" WHOIS="/usr/bin/whois" AWK="/usr/bin/awk" check_domain() { DOMAIN=$1 DTYPE=$( echo $DOMAIN | awk -F "." '{print $NF}' ) if [ "$DTYPE" == "com" ] then EXDATE_TMP=$(${WHOIS} -h whois.internic.com "=${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -c 1-16) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "ie" ] then EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "studio" ] then EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "se" ] || [ "$DTYPE" == "nu" ] then EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/expires:/ { print $2 }') if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "ua" ] then EXDATE_TMP=$(${WHOIS} -h whois.ua "${1}" | ${AWK} '/expires:/ { print $2 }') if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "asia" ] then EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -c 1-16) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "org" ] then EXDATE_TMP=$(${WHOIS} -h whois.pir.org "${1}" | ${AWK} '/Expiry Date:/ { print $4 }' | cut -c 1-16) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "info" ] then EXDATE_TMP=$(${WHOIS} -h whois.afilias.info "${1}" | ${AWK} '/Expiry Date:/ { print $4 }' | cut -c 1-16) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "net" ] then EXDATE_TMP=$(${WHOIS} -h whois.verisign-grs.com "${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -c 1-16) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "dev" ] then EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -c 1-16) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "center" ] then EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -c 1-16) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "pro" ] then EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -c 1-16) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "me" ] then EXDATE_TMP=$(${WHOIS} -h whois.nic.me "${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -c 1-16) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "su" ] then EXDATE=$(${WHOIS} "${1}" | ${AWK} '/paid-till:/ { gsub("\\.","-"); print $2 }' | cut -d 'T' -f1) if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "xn--p1ai" ] then EXDATE=$(${WHOIS} "${1}" | ${AWK} '/paid-till:/ { gsub("\\.","-"); print $2 }' | cut -d 'T' -f1) if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "ru" ] then EXDATE=$(${WHOIS} "${1}" | ${AWK} '/paid-till:/ { gsub("\\.","-"); print $2 }' | cut -d 'T' -f1) if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "moscow" ] then EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -c 1-16) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "art" ] then EXDATE=$(${WHOIS} -h whois.nic.art "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1) if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "pl" ] then EXDATE=$(${WHOIS} "${1}" | ${AWK} '/renewal date:/ { gsub("[:.]","-"); print $3 }') if [ -z "$EXDATE" ] then EXDATE=$(${WHOIS} -h whois.dns.pl "${1}" | ${AWK} '/expiration date:/ { gsub("[:.]","-"); print $3 }') if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "cz" ] then EXDATE=$(${WHOIS} -h whois.nic.cz "${1}" | ${AWK} '/expire:/ { print $2 }' | ${AWK} '{ split($0, d, "."); print d[3]"-"d[2]"-"d[1] }') if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "sk" ] then EXDATE=$(${WHOIS} -h whois.sk-nic.sk "${1}" | ${AWK} '/Valid Until:/ { print $3 }') if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "biz" ] then EXDATE=$(${WHOIS} -h whois.biz "${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -d 'T' -f1) if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "fr" -o "$DTYPE" == "re" -o "$DTYPE" == "yt" -o "$DTYPE" == "tf" -o "$DTYPE" == "wf" -o "$DTYPE" == "pm" ] then EXDATE=$(${WHOIS} -h whois.afnic.fr "${1}" | ${AWK} '/Expiry Date:/ { gsub("[:.]","-"); print $3 }' | cut -d 'T' -f1) if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "shop" ] then EXDATE=$(${WHOIS} -h whois.nic.shop "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1) if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "tv" ] then EXDATE=$(${WHOIS} -h tvwhois.verisign-grs.com "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1) if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "im" ] then EXDATE_TMP=$(${WHOIS} -h whois.nic.im "${1}" | ${AWK} '/Expiry Date:/ { gsub("[:.]","-"); print $3 }' | cut -d 'T' -f1 | awk -F[/] '{print $2"/"$1"/"$3}') if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "uk" ] then EXDATE_TMP=$(${WHOIS} -h whois.nic.uk "${1}" | grep 'Expiry date' | ${AWK} '{ print $3 }' ) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "tech" ] then EXDATE_TMP=$(${WHOIS} -h whois.nic.tech "${1}" | grep -i 'Expiry Date' | ${AWK} '{ print $4 }' ) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "co" ] then EXDATE_TMP=$(${WHOIS} -h whois.cloudflare.com "${1}" | grep -i 'Expiration Date' | ${AWK} '{ print $5 }') if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=$(date -d"$EXDATE_TMP" +%Y-%m-%d) EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "digital" ] then EXDATE_TMP=$(${WHOIS} -h whois.nic.digital "${1}" | grep -i 'Expiry Date' | ${AWK} '{ print $4 }' ) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "br" ] then EXDATE_TMP=$(${WHOIS} -h whois.registro.br "${1}" | grep -i 'expires' | ${AWK} '{ print $2 }' ) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "do" ] then EXDATE_TMP=$(${WHOIS} -h whois.nic.do "${1}" | ${AWK} '/Registrar Registration Expiration Date:/ { print $5 }') if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "id" ] then EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Expiration Date:/ { print $3 }') if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "it" ] then EXDATE_TMP=$(${WHOIS} -h whois.nic.it "${1}" | grep -i "Expire Date" | ${AWK} '{ print $3 }') if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "club" ] then EXDATE=$(${WHOIS} -h whois.nic.club "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1) if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "io" ] then EXDATE=$(${WHOIS} -h whois.nic.io "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1) if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "space" ] then EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "rocks" ] then EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "us" ] then EXDATE=$(${WHOIS} -h www.whois.us "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1) if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "in" ] then EXDATE=$(curl -Ls "https://rdap.org/domain/${1}" | jq -r '.events[] | select(.eventAction == "expiration") | .eventDate' | cut -d 'T' -f1) if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "mx" ] then EXDATE_TMP=$(${WHOIS} "${1}" | ${AWK} '/Expiration Date:/ { print $3 }') if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "fm" ] then EXDATE_TMP=$(${WHOIS} -h whois.nic.fm "${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -c 1-16) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "xyz" ] then EXDATE_TMP=$(${WHOIS} -h whois.nic.xyz "${1}" | ${AWK} '/Registry Expiry Date:/ { print $4 }' | cut -c 1-16) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" = "is" ] then EXDATE_TMP=$(${WHOIS} -h whois.isnic.is "${1}" | ${AWK} 'BEGIN { FS=":"} ; /expires:/ { print $2 }' | cut -c 7-) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "bz" ] then EXDATE=$(${WHOIS} -h whois.afilias-grs.info "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1) if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "cn" ] then EXDATE=$(${WHOIS} -h whois.cnnic.net.cn "${1}" | ${AWK} '/Expiration Time:/ { print $3 }') if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "kr" ] then EXDATE=$(${WHOIS} -h whois.nic.or.kr "${1}" | ${AWK} '/Expiration Date/ { gsub("\\.",""); print $4"-"$5"-"$6 }') if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "la" ] then EXDATE=$(${WHOIS} -h whois.nic.la "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1) if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "tw" ] then EXDATE=$(${WHOIS} -h whois.twnic.net.tw "${1}" | ${AWK} '/Record expires on/ { print $4 }') if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "vg" ] then EXDATE=$(${WHOIS} -h whois.nic.vg "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1) if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "ca" ] then EXDATE=$(${WHOIS} -h whois.cira.ca "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1) if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "cloud" ] then EXDATE=$(${WHOIS} -h whois.nic.cloud "${1}" | ${AWK} '/Registry Expiry Date:/ { gsub("[:.]","-"); print $4 }' | cut -d 'T' -f1) if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "group" ] then EXDATE=$(curl -Ls "https://rdap.org/domain/${1}" | jq -r '.events[] | select(.eventAction == "expiration") | .eventDate' | cut -d 'T' -f1) if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "ag" ] then EXDATE=$(${WHOIS} -h whois.godaddy.com "${1}" | ${AWK} '/Registrar Registration Expiration Date:/ { gsub("[:.]","-"); print $5 }' | cut -d 'T' -f1) if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$DTYPE" == "ph" ] then EXDATE=$(curl -Ls "https://whois.dot.ph/?utf8=%E2%9C%93&search=${1}" | ${AWK} -F"'" '/var expiryDate = moment/ { print $2 }' | cut -d 'T' -f1) if [ -z "$EXDATE" ] then EXP_DAYS=NULL else EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi else EXDATE_TMP=$(${WHOIS} -h whois.cloudflare.com "${1}" | ${AWK} '/Expiry Date:|Expiration Date:/ { print $NF }') if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=$(echo "$EXDATE_TMP" | cut -d 'T' -f1) EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi fi } check_domain_by_whois() { DOMAIN=$1 SERVER=$2 if [ "$SERVER" == "whois.crazydomains.com" ] then EXDATE_TMP=$(${WHOIS} -h ${SERVER} "${DOMAIN}" | grep -i 'Expiration Date' | ${AWK} '{ print $5 }' ) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$SERVER" == "whois.cloudflare.com" ] then EXDATE_TMP=$(${WHOIS} -h ${SERVER} "${DOMAIN}" | grep -i 'Expiration Date' | ${AWK} '{ print $5 }' ) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi elif [ "$SERVER" == "whois.drs.ua" -o "$SERVER" == "whois.pp.ua" -o "$SERVER" == "whois.biz.ua" ] then EXDATE_TMP=$(${WHOIS} -h ${SERVER} "${DOMAIN}" | awk '/Expiration Date:/ { gsub("[:.]"," "); print $3 }' ) if [ -z "$EXDATE_TMP" ] then EXP_DAYS=NULL else EXDATE=`date -d"$EXDATE_TMP" +%Y-%m-%d` EXP_DAYS=$(( ( $(date -ud ${EXDATE} +'%s') - $(date -ud `date +%Y-%m-%d` +'%s') )/60/60/24 )) fi else EXP_DAYS=NULL fi } help() { echo "Usage: $0 [ -d domain_name ] [ -f domains_file ] [ -s whois_server ] [ -c critical_days ] [ -u teams_webhook_url ] [ -h ]" echo echo " -d domain : Domain to check" echo " -f file : File with one domain per line" echo " -s server : Whois server to query by" echo " -c days : Domain expiration critical threshold (default: 10)" echo " -u url : Teams webhook URL (sends only critical domains as JSON)" echo " -h : Show help" echo } while getopts :hd:f:s:c:u: option do case "${option}" in d) DOMAIN=$( echo ${OPTARG} );; f) DOMAINS_FILE=$OPTARG;; s) SERVER=$OPTARG;; c) CRITICAL_DAYS=$OPTARG;; u) TEAMS_URL=$OPTARG;; h | *) help exit 0;; esac done check_single() { local DOM=$1 if [ "${SERVER:=auto}" == auto ] then check_domain "${DOM}" else check_domain_by_whois "${DOM}" "${SERVER}" fi if ! [[ "$EXP_DAYS" =~ ^-?[0-9]+$ ]] then echo "UNKNOWN - ${DOM}: expiration date not available" elif [ $EXP_DAYS -lt 0 ] then echo "CRITICAL - ${DOM}: domain has expired!" elif [ $EXP_DAYS -le $CRITICAL_DAYS ] then echo "CRITICAL - ${DOM}: $EXP_DAYS days until domain expires" else echo "OK - ${DOM}: $EXP_DAYS days until domain expires" fi } send_teams() { local TITLE_STR=$1 local TEXT_STR=$(echo "$2" | sed '/^$/d' | awk '{printf "%s%s", sep, $0; sep="\n\n"}') local PAYLOAD PAYLOAD=$(jq -n \ --arg title "$TITLE_STR" \ --arg text "$TEXT_STR" \ '{ type: "AdaptiveCard", "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", version: "1.4", body: [ {type: "TextBlock", text: $title, weight: "Bolder", size: "Medium"}, {type: "TextBlock", text: $text, wrap: true} ] }') curl -sf \ -H "Content-Type: application/json" \ -d "$PAYLOAD" \ "$TEAMS_URL" } if [ -n "$DOMAINS_FILE" ] then if [ ! -f "$DOMAINS_FILE" ] then echo "File not found: $DOMAINS_FILE" exit 1 fi ALL_TEXT="" CRITICAL_TEXT="" while IFS= read -r line do line=$(echo "$line" | sed 's/#.*//' | xargs) [ -z "$line" ] && continue MSG=$(check_single "$line") ALL_TEXT="${ALL_TEXT}${MSG} " case "$MSG" in CRITICAL*) CRITICAL_TEXT="${CRITICAL_TEXT}${MSG} " ;; esac done < "$DOMAINS_FILE" if [ -n "$TEAMS_URL" ] then [ -n "$CRITICAL_TEXT" ] && send_teams "Domain Expiration: CRITICAL" "$CRITICAL_TEXT" exit 0 fi printf '%s' "$ALL_TEXT" exit 0 fi if [ -z "$DOMAIN" ] then echo "No domain specified (-d or -f)" exit 1 fi MSG=$(check_single "$DOMAIN") if [ -n "$TEAMS_URL" ] then case "$MSG" in CRITICAL*) send_teams "Domain Expiration: CRITICAL | ${DOMAIN}" "$MSG" ;; esac exit 0 fi echo "$MSG"