Если использование внешней программы приемлемо, вы можете использовать монитор -ip . Он написан на C и достаточно настраиваемый. В отличие от скрипта bash, который зацикливается и постоянно выполняется ping
или задания cron, он может выполнять 100 пингов в секунду, потребляя при этом менее 1% процессорного времени.
Например, вы можете использовать что-то вроде этого:
sudo./monitor-ip --interval 5.0 --missed-max 20 --reset -- 1.2.3.4 \
bash -c 'mail -s "Server Down!" myaddress@xxxx.com <<< "$MONITOR_NOTIFY_REMOTE_ADDRESS unreachable"'
Это будет отправлять эхо-запросы на 1.2.3.4
с интервалом в 5 секунд, пока не будет получено 20 последовательных эхо-запросов. (1 минута простоя ), затем отправить электронное письмо на адрес myaddress@xxxx.com. Он будет продолжать отправлять электронные письма с интервалом в 1 минуту, пока условие статуса не будет разрешено.
Полное раскрытие :Я написал монитор -ip .
Приведенный ниже сценарий отлично работает для описанных ниже сценариев
#!/bin/bash
echo "enter the hostname or IP of the host"
read h
ping -c1 $h
if [ $? != 0 ]
then
sleep 6
ping -c1 $h
if [ $? != 0 ]
then
sleep 6
ping -c1 $h
if [ $? != 0 ]
then
echo "host $h is not pinging and its not reachable"
mail -s "host $h is not pinging and its not reachable" emailid </dev/null
else
echo "host $h is pinging"
fi
fi
fi