Скрипт BASH проверяющий доступность сайта/ip-адреса.

2 комментария
linux-logo

Сегодня в статье разберем пример написания скрипта для проверки доступности ресурса при помощи BASH в Linux. Может кому то будет полезен :).

И так поехали:

Скрипт доступности ресурса

  1. Создадим текстовый файл ping_test.sh со следующим содержанием:
sudo nano ~/ping_test.sh
#!/bin/bash
PATH=/bin:/bin/bash:/usr/bin:/sbin:/usr/sbin
IP=("10.5.5.1") # тут либо ip, либо FQDN вашего домена
for g in ${IP[@]}; do
    result=$(ping -c 2 -W 1 -q $g | grep transmitted)
    pattern="0 received";
        if [[ $result =~ $pattern ]]; then
            while [[ $result =~ $pattern ]]
                do
                result=$(ping -c 2 -W 1 -q $g | grep transmitted)
                echo "$result"
            done
        else
             echo "$g is up"
        fi
done

Скрипт будет проверять доступность ресурса при помощи команды ping до тех пор пока данный ресурс не выйдет на связь. Для автоматизации давайте запишем задание в crontab. Задание будет срабатывать при перезагрузке системы.

@reboot /bin/bash /sbin/ping_test.sh

Также если вам необходимо чтобы еще отправлялось уведомление на почту, то скрипт примет такой вид:

#!/bin/bash
PATH=/bin:/bin/bash:/usr/bin:/sbin:/usr/sbin
IP=("10.5.5.1")
for g in ${IP[@]}; do
    result=$(ping -c 2 -W 1 -q $g | grep transmitted)
    pattern="0 received";
        if [[ $result =~ $pattern ]]; then
            while [[ $result =~ $pattern ]]
                do
                result=$(ping -c 2 -W 1 -q $g | grep transmitted)
                #отправим уведомление на почту
                sendemail -f "кому@yandex.ru" -t "от_кого@yandex.ru" -u "Проблема с доступностью сервера" -m "Сообщение от $(hostname) . $ADDR недоступен с $(date)" -xu "логин" -xp "пароль" -s "smtp.yandex.ru" -o "message-charset=utf-8"
                notify-send "Статус сервера $IP" "Offline, сообщение направлено на почту"
            done
        else
             echo "$g is up"
        fi
done
fi
  • IP=»10.5.5.1″ — IP-адрес для мониторинга. Через пробел можно указать несколько адресов.
  • ping -c 2 -W 1 — количество пакетов посылаемых на сервер
  • -f «кому@yandex.ru» — указываю свою почту
  • -t «от_кого@yandex.ru» — указываем почту от которой будем отправлять.
  • -u «Проблема с доступностью сервера» — тема сообщения
  • -m «Сообщение от $(hostname) . $ADDR недоступен с $(date)» — Содержание сообщения
  • -xu «логин» — Логин от вашей почты
  • -xp «пароль» — Пароль от вашей почты
  • -s «smtp.yandex.ru» — Адрес smtp сервера отправки почты, в моем случае это yandex
  • -o «message-charset=utf-8» — Кодировка сообщения, без нее будет крякозябры.
  1. Даем права на исполнение
chmod +x ping_test.sh

Для того чтобы сработала отправка почты нужно установить пакет sendemail

sudo apt install sendemail
  1. Радуемся, через заданный промежуток времени в событии будет высвечено сообщение о статусе.

Скрипт доступности ресурса каждые 10 секунд

Запускать задание через каждых 10 секунд:

#!/bin/bash
PATH=/bin:/bin/bash:/usr/bin:/sbin:/usr/sbin
IP=("10.5.5.1")
while :;do
  for g in ${IP[@]}; do
    result=$(ping -c 2 -W 1 -q $g | grep transmitted)
    pattern="0 received";
        if [[ $result =~ $pattern ]]; then
            while [[ $result =~ $pattern ]]
                do
                result=$(ping -c 2 -W 1 -q $g | grep transmitted)
                echo "$result"
            done
        else
             echo "$g is up"
        fi
  done
  sleep 10
done

Если есть вопросы, то пишем в комментариях.

Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо!!!

RSS

Добавление RSS-ленты на главную страницу этого сайта не поддерживается, так как это может привести к зацикливанию, замедляющему работу вашего сайта. Попробуйте использовать другой блок, например блок Последние записи, для отображения записей сайта.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Список проверенных пинг сервисов WordPress 2019
wordpress-logo

Составил и отсортировал повторяющиеся пинг сервисы для блогов WordPress в 2019 году. Копируйте и пользуйтесь моим списком пинг сервисов чтобы Читать

-bash: host: command not found
linux-logo

Сегодня в статье разберём распространенную ошибку в Debian подобных системах (может и не только). Данную ошибку выдал терминал при попытке Читать

Переименовываем интерфейсы в Ubuntu 18.04|20.04|22.04
network-logo

В данной статье расcкажу как можно легко переименовать сетевые интерфейсы в Ubuntu 18.04|20.04|22.04....Но как изменить название интерфейса на более привычное?

Проброс PPPoE соединение в Linux
network-logo

Сегодня поговорим о том, как можно пробросить PPPoE соединение на Linux к другим машинам находящимся в локальной сети.

5 2 голоса
Рейтинг статьи

Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

2 комментариев
новее
старее большинство голосов
Inline Feedbacks
Просмотреть все комментарии
Сергей
Сергей
23.08.2021 11:42

Не отрабатывает, если ping возвращает другое сообщение, например «connect: Network is unreachable».

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов cookie) с использованием трекеров "Google Analytics" и "Yandex.Metrics". Порядок обработки Ваших персональных данных, а также реализуемые требования к их защите, содержатся в Политике конфиденциальности.
Принять