После установленного knockd у меня возникла потребность отслеживать запущен он или нет, так как инет у меня работает через pppoe который при загрузке системы не сразу получает внутренний ip адресс. Поэтому knockd не запускается.
Написав несложный скрипт по проверке knockd в процессах и последующего запуска, если таковой отсутсвует, решил его немного универсализировать и проверять нужные мне демоны.
Некоторые могут сказать что уже есть программы в портах для этого, например monitord (/usr/ports/sysutils/monitord) или monit (/usr/ports/sysutils/monit), но у меня они не совсем устроили. Monitord постоянно пытается писать статусные сообщения в консоль в которой его запустили, меня это жутко раздражает. Monit имеет более богатый функционал, но он мне не нужен, мне надо просто следилку за демонами.
Сам скрипт monitd.sh:
#!/bin/sh
fileconf=»/usr/local/etc/monitd.conf»
logfile=»/var/log/monitd.log»if [ -r «$fileconf» ]
then
daemons=`cat $fileconf`
else
echo «Error! Config file $fileconf not found»
exit 0
fifor dmn in $daemons
do
DAEM=`$dmn status | grep pid`
if [ -z «$DAEM» ]
then
if [ ! -w «$logfile» ]
then
touch $logfile
fi
echo `date «+[%d.%m.%Y] %H:%M:%S»` : `$dmn start` >> /var/log/monitd.log
fi
DAEM=»»
done
пример конфиг файла /usr/local/etc/monitd.conf :
/usr/local/etc/rc.d/knockd
/usr/local/etc/rc.d/samba
/usr/local/etc/rc.d/apache22
/etc/rc.d/sshd
Все запущенные демоны можно посмотреть /var/log/monitd.log.
Естественно надо чтобы скрипт запускался от привилегированного пользователя. Осталось только пихнуть его в cron и благополучно забыть 🙂
*/15 * * * * root /bin/sh /root/monitd.sh
P.S. : Скрипт должен благополучно работать и в Linux. Надо только слегка подправить конфиг и сам скрипт.
Этот же скрипт, только сохранный в фаил : monitd.sh.txt
© Человек_Разумный
1 comment
RSS / trackback