Понеже ми се събраха доста домейни под моя юрисдикция, някои от които регистрирани преди доста време се огледах за shell script, който проверява за изтичането на даден домейн. Можеше да си играя да пиша и сам, но след като има готови, които вършат работа нямаше нужда. Единственото, което трябваше да се направи е проверка и за .bg домейни. Скриптът, който ползвах за основа може да бъде намерен тук /като цяло cyberciti.biz е чуден блог за unix/linux tips & tricks/
Кодът, който съм добавил е съобразен с output-а, който връща към момента whois.register.bg:
DOMAIN NAME: digsys.bg
requested on: 08/09/1991 00:00:00 EEST
processed from: 08/09/1991 00:00:00 EEST
activated on: 08/09/1991 00:00:00 EEST
expires at: 01/01/2012 00:00:00 EET
registration status: Registered
REGISTRANT:
Digital Systems Ltd.
VARNA, 9000
BULGARIA
И в частност полетата „REGISTRANT“ и „expires at“.
Като към скрипта, аз съм добавил следното:
diff -c check.domain.expired_orig.sh check.domain.expired.sh *** check.domain.expired_orig.sh 2011-02-22 17:02:27.000000000 +0200 --- check.domain.expired.sh 2011-02-22 20:02:27.000000000 +0200 *************** *** 235,240 **** --- 235,243 ---- elif [ "${TLDTYPE}" == "in" ]; # India then ${WHOIS} -h "whois.registry.in" "${1}" > ${WHOIS_TMP} + elif [ "${TLDTYPE}" == "bg" ]; # Bulgaria + then + ${WHOIS} -h "whois.register.bg" "${1}" > ${WHOIS_TMP} elif [ "${TLDTYPE}" == "uk" ]; # United Kingdom then ${WHOIS} -h "whois.nic.uk" "${1}" > ${WHOIS_TMP} *************** *** 265,270 **** --- 268,276 ---- elif [ "${TLDTYPE}" == "jp" ]; then REGISTRAR=`cat ${WHOIS_TMP} | ${AWK} '/Registrant/ && $2 != "" { REGISTRAR=substr($2,1,17) } END { print REGISTRAR }'` + elif [ "${TLDTYPE}" == "bg" ]; + then + REGISTRAR=`cat ${WHOIS_TMP} | ${AWK} '/REGISTRANT:/ && $0 != "" { getline; REGISTRAR=substr($0,1,17) } END { print REGISTRAR }'` fi # If the Registrar is NULL, then we didn't get any data *************** *** 308,313 **** --- 314,341 ---- esac tday=`echo ${tdomdate} | cut -d'/' -f3` DOMAINDATE=`echo $tday-$tmonth-$tyear` + elif [ "${TLDTYPE}" == "bg" ]; # for .bg dd/mm/yyyy 05/03/2011 + then + tdomdate=`cat ${WHOIS_TMP} | awk '/expires at/ { print $3 }'` + tyear=`echo ${tdomdate} | cut -d'/' -f3` + tmon=`echo ${tdomdate} | cut -d'/' -f2` + case ${tmon} in + 1|01) tmonth=jan ;; + 2|02) tmonth=feb ;; + 3|03) tmonth=mar ;; + 4|04) tmonth=apr ;; + 5|05) tmonth=may ;; + 6|06) tmonth=jun ;; + 7|07) tmonth=jul ;; + 8|08) tmonth=aug ;; + 9|09) tmonth=sep ;; + 10)tmonth=oct ;; + 11) tmonth=nov ;; + 12) tmonth=dec ;; + *) tmonth=0 ;; + esac + tday=`echo ${tdomdate} | cut -d'/' -f1` + DOMAINDATE=`echo $tday-$tmonth-$tyear` else # .com, .edu, .net and may work with others DOMAINDATE=`cat ${WHOIS_TMP} | ${AWK} '/Expiration/ { print $NF }'` fi
Готовият скрипт с поддръжка на .bg домейни, може да бъде намерен тук.
Примерен output:
./check.domain.expired.sh -d digsys.bg
Domain Registrar Status Expires Days Left ----------------------------------- ----------------- -------- ----------- --------- digsys.bg Digital Systems L Valid 01-jan-2012 313
Може да го ползваме в cronjob, и ако домейна изтича в рамките на месец да получим известяване по email.
./check.domain.expired.sh -a -d example.org -q -x 30 -e mail@example.net
Има възможност и за подаване на повече от един домейн чрез текстов файл (всеки домейн на нов ред).
Въобще всички възможни опции:
Usage: ./check.domain.expired.sh [ -e email ] [ -x expir_days ] [ -q ] [ -a ] [ -h ] {[ -d domain_namee ]} || { -f domainfile} -a : Send a warning message through email -d domain : Domain to analyze (interactive mode) -e email address : Email address to send expiration notices -f domain file : File with a list of domains -h : Print this screen -s whois server : Whois sever to query for information -q : Don't print anything on the console -x days : Domain expiration interval (eg. if domain_date < days)
Вероятно по-натам на базата на това, ще направя и скрипт за директна проверка в nagios.

