
Одна из задач системного администратора - следить за сроком истечения оплаты домена. Автоматизируем процесс через заббикс.
Ссылки
Вторая версия скрипта мониторинга срока действия домена:
Zabbix — срок действия домена 2
Третья версия скрипта мониторинга срока действия домена:
Zabbix — срок действия домена 3
Установка
Установим на заббикс сервер whois, у меня ubuntu:
apt-get install whois
В конфиге заббикс сервера смотрим путь к скриптам в переменной ExternalScripts:
ExternalScripts=/usr/lib/zabbix/externalscripts
Создаём там новый скрипт:
cd /usr/lib/zabbix/externalscripts
touch checkdomainexpire.sh
chmod +x ./checkdomainexpire.sh
chown zabbix\: checkdomainexpire.sh
Содержимое скрипта:
#!/bin/bash
# получаем имя домена
DOMAIN=$1
#если домен не передан - выводим массив для автообнаружения
if [[ $DOMAIN = "" ]]; then
#заполняем массив из файла и выводим в JSON
readarray DOMAINLIST < /usr/lib/zabbix/externalscripts/checkdomainexpire_domain_list.txt
if ((${#DOMAINLIST[*]}>0)); then
echo "{"
echo " \"data\": ["
for ((a=0; a < ${#DOMAINLIST[*]}; a++))
do
x=${DOMAINLIST[$a]};
x=${x//[[:space:]]/};
echo " {"
echo " \"{#DOMAIN}\": \"${x}\""
if ((a+1 < ${#DOMAINLIST[*]})); then
echo " },"
else
echo " }"
fi
done
echo " ]"
echo "}"
fi
else
# получаем имя зоны
ZONE=`echo $DOMAIN | sed 's/\./ /' | awk '{ print $2 }'`
# получаем дату протухания домена
# Должна вернуться в формате ГГГГ-ММ-ДД (год-месяц-день)
case "$ZONE" in
ru|net.ru|org.ru|pp.ru|рф)
DATE=`whois $DOMAIN | grep paid-till | awk '{ print $2 }' | sed 's/\./-/g'`
;;
spb.ru|msk.ru)
DATE=`whois -h whois.nic.ru $DOMAIN | grep paid-till | awk '{ print $2 }' | sed 's/\./-/g'`
;;
re)
DATE="$(whois $DOMAIN | awk '/[Ee]xpir.*[Dd]ate:/ || /[Tt]ill:/ || /expire/ {print $NF; exit;}')"
DATE=`date --date=$DATE +%d/%m/%Y`
;;
org|com|net)
DATE=`whois $DOMAIN | grep "Registry Expiry Date:" | sed 's/Registry Expiry Date: //g;s/T/ /g' | awk '{ print $1 }'`
;;
*)
DATE="$(whois $DOMAIN | awk '/[Ee]xpir.*[Dd]ate:/ || /[Tt]ill:/ || /expire/ {print $NF; exit;}')"
if test -z "$DATE"; then
#Отсутствует информация в Whois для домена
echo "-1"
continue
fi
esac
# считаем дни и выводим
expr \( `date --date="$DATE" +%s` - `date +%s` \) / 60 / 60 / 24
fi
Обратите внимание на строку "readarray DOMAINLIST < /usr/lib/zabbix/externalscripts/checkdomainexpire_discovery.txt", езмените её, если ваш путь отличается.
Создаём файлик со списком проверяемых доменов:
cd /usr/lib/zabbix/externalscripts
touch checkdomainexpire_domain_list.txt
chown zabbix\: checkdomainexpire_domain_list.txt
Содержимое:
internet-lab.ru
mail.ru
Добавляем пользовательские параметры в конфиг заббикс агента. Создаём файл checkdomainexpire.conf в папке /etc/zabbix/zabbix_agentd.conf.d:
cd /etc/zabbix/zabbix_agentd.conf.d
touch checkdomainexpire.conf
chown zabbix\: checkdomainexpire.conf
Содержимое:
UserParameter=domainexpire[*],/usr/lib/zabbix/externalscripts/checkdomainexpire.sh $1
UserParameter=domainexpire.discovery,/usr/lib/zabbix/externalscripts/checkdomainexpire.sh
Измените пути к скрипту при необходимости.
Перезапускаем агент:
service zabbix-agent restart
Загружаем в заббикс шаблон: zbx_domain_expiration.xml
Привязываем шаблон к хосту заббикс сервера. Заббикс через автообнаружение создаст для каждого домена элемент данных и триггер.