Доброе время суток.
В связи с незнанием того, что домашний сервер упал ночью, решил написать скрипт проверяющий его доступность. Может кому то будет полезен.
И так поехали:
1. Создадим текстовый файл со следующим содержанием:
#!/bin/bash
#server_ping
DISPLAY=:0.0;
ADDRESS="192.168.1.4"
if ping -c 10 -s 10 -W 10 $ADDRESS
then
notify-send "Статус сервера 192.168.1.4" "Online"
else
#отправим мыло
sendemail -f "кому@yandex.ru" -t "от кого@yandex.ru" -u "Проблема с доступностью сервера" -m "Сообщение от $(hostname) . 192.168.1.4 недоступен с $(date)" -xu "логин" -xp "пароль" -s "smtp.yandex.ru" -o "message-charset=utf-8"
notify-send "Статус сервера 192.168.1.4" "Offline, сообщение направлено на почту"
fi
Где:
DISPLAY=:0.0; Идентификатор вашего дисплея
Чтобы узнать в терминале выполните команду
echo = "$DISPLAY"
ADDRESS="192.168.1.4" Желаемый ip для мониторинга
ping -c 10 -s 10 -W 10 Количество пакетов посылаемых на сервер
-f "кому@yandex.ru" Тут все понятно, я указываю свою почту
-t "от кого@yandex.ru" указываем почту от которой будем отправлять.
-u "Проблема с доступностью сервера" Тема сообщения
-m "Сообщение от $(hostname) . 192.168.1.4 недоступен с $(date)" Содержание сообщения
-xu "логин" Логин от вашей почты
-xp "пароль" Пароль от вашей почты
-s "smtp.yandex.ru" Адрес smtp сервера отправки почты, в моем случае это yandex
-o "message-charset=utf-8" Кодировка сообщения, без нее будет крякозябры
2. Сохраняем, я задал имя server_ping
3. Даем права на исполнение
chmod +x server_ping
4. Для того чтобы сработала отправка почты нужно установить пакет sendemail
sudo apt-get install sendemail
4. Настраиваем cron (Что такое cron и чем его едят можно
тут)
В терминале выполняем команду:
crontab -e
В конце файла дописываем:
Кто не знает как указывать период выполнения скрипта может воспользоваться
online-гениратором# Выполнить скрипт проверки доступности сервера каждую минуту
*/30 * * * * export DISPLAY=:0.0; /sbin/server_ping #указываем полный путь до скрипта
5. Сохраняем и перезапускаем службу
sudo services cron restart
6. Радуемся, через заданный промежуток времени в событии будет высвечено сообщение о статусе:
PS: если у кого то есть замечания или дополнение к скрипту, пишите в тему.