Май 07

Скрипт пытается подключиться к указанному порту и в случае неудачи перезапускает сервис.
Кинул в crontab на исполнение каждые 2 минуты.
*/2 * * * * /home/username/scripts/service_checker

Сам скрипт:

#!/bin/bash
host="localhost" #host to check
port="80" # port to check
service="apache2" # service to check

if echo q | telnet -e q $host $port| grep -oq Connected &> /dev/null
    then echo $host $port is ok at `date +%k:%M\ %d/%m/%y`.
    else echo $host $port fail at `date +%k:%M\ %d/%m/%y`.; /etc/init.d/$service restart;
fi;

3 Responses to “Простой bash скрипт для проверки доступности сервиса”

  1. Александр Says:

    Почему-то &> /dev/null не особо работает. В случае недоступности вываливается сообщение:
    telnet: МОЙХОСТ: Name or service not known
    МОЙХОСТ: Unknown host
    А это критично.

  2. jeka Says:

    Старая штука, я ее уже давно не использую. Можно написать скриптик на питоне, с эксепшенами и прочим или поставить monit для наблюдения за демонами.

    Тут в общем описано с разнообразными примерами: http://habrahabr.ru/post/73506/

  3. jeka Says:

    И да, судя по ошибке у вас с DNS’ом какие-то проблемы. Тут рестарт не сильно поможет.

Написать ответ