В статье мы рассмотрели возможность отправки СМС-сообщений через USB-модем во FreeBSD. Решил описать пример скрипта, который бы давал нам понять через СМС, что сервер упал. Немного лирики, у меня на работе используется одно серверное приложение, которое крутится на MacOS9 и нет возможности от него избавиться, под приложение выделен отдельный G4 и вроде бы работает, но валиться причем непредсказуемо и хотелось бы иметь возможность узнавать об этом как можно быстрее, чтобы можно например пораньше на работу приехать и поднять сервер, чтобы пользователям было хорошо:)
Для этого напишем небольшой скрипт на Shell, будем опрашивать наш сервер через команду ping, которая к счастью при успешной отработке возвращает нам 0 и мы считаем, что все остальное у нас настроено (SMSTools).
#!/bin/sh #Сделаем несколько переменных: #1) Укажем файл для хранения состояния при падении сервера lockfile="/home/admins/scripts/host_down.loc" #2) определим в переменную host IP адрес сервера host="10.0.0.15" #3) Создадим переменную с полным путем до скрипта sendsms и телефонным номером #на который будем посылать СМС (можно указать несколько номеров через пробел) sendsms="/usr/local/bin/sendsms 79XXXXXXXXX" ping -q -c 2 $host > /dev/null 2>&1 if [ $? = 0 ]; then if [ -f $lockfile ]; then rm $lockfile $sendsms "CЕРВЕР ПОДНЯЛСЯ" > /dev/null 2>&1 fi else if [ -f $lockfile ]; then exit else echo "SERVER is DOWN" > $lockfile $sendsms "СЕРВЕР УПАЛ" > /dev/null 2>&1 fi fiОбъяснять особо по скрипту нечего, собственно что он делает
1) Пингует host
2) При удачном пинге, проверяет есть ли файл который создается при падении сервера, если есть, то удаляет его и отсылает нам СМС, о том,что сервер стал доступен, если файла нет, то скрипт ничего не делает
3) При неудачном пинге, создается файл $lockfile, отправляется СМС о падении сервера, при этом СМС будет отправлена если $lockfile до этого отсутствовал.
Как-то так:)
Ну и запихиваем скрипт в crontab, я запускаю каждые 5 минут# crontab -e #SENDSMS */5 * * * * /home/admins/scripts/up_down_hosts.shВсем спасибо:)