[Решено] проверка сайта на доступность

На самом деле это единственный раздел про unix на этом форуме

Модератор: /dev/random

Аватара пользователя
bars
Сообщения: 634
ОС: BSD/LINUX

[Решено] проверка сайта на доступность

Сообщение bars »

Привет.
Что то я запутался в скрипте.
Подскажите пожалуйста.

Код: Выделить всё

#!/bin/sh
CUR="curl -LI --connect-timeout 15 https://www.google.com -o /dev/null -w "%{http_code}" -s"
CUR_SIT="curl -LI --connect-timeout 15 https://mysite.ru -o /dev/null -w "%{http_code}" -s"
DT=`date +"%H:%M"`

i=0
while [ "$($CUR)" != "200" ]
do
  i=$((i+1))
  [ $i -eq 5 ] && exit
  sleep 10
done
  if curl -LI --connect-timeout 10 https://www.google.com -o /dev/null; then
    if [ "$($CUR_SIT)" != "200" ]
      then
        echo "Сайт mysite не доступен $DT." | mail -s "Сайт mysite не доступен $DT." -aFrom:site mymail@mail.ru
        touch /tmp/check.txt
    fi
  fi

exit 0
В условие done
Если не код ответа 200 то выполняется условие с отправкой на почту уведомления и создания pid файла.
Но как мне добавить проверку что бы не заспамивался почтовый ящик.
Допустим нет связи с сайтом, создается пид файл /tmp/check.txt, но дальше пока что то не надумал как лучше сделать проверку.
Нужно как я понимаю отдельное условия проверки доступности сайта, если сайт доступен то удалять пид файл /tmp/check.txt, если сайт по прежнему не доступен, то закрывать скрипт, как то так.
Последний раз редактировалось bars 30.06.2022 10:52, всего редактировалось 1 раз.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 676
ОС: debian, fedora (i3-wm)

Re: проверка сайта на доступность

Сообщение olecya »

bars писал:
30.06.2022 10:15

Код: Выделить всё

    if [ "$($CUR_SIT)" != "200" ]
      then
        echo "Сайт mysite не доступен $DT." | mail -s "Сайт mysite не доступен $DT." -aFrom:site mymail@mail.ru
        touch /tmp/check.txt
    fi

Код: Выделить всё

  if curl -LI --connect-timeout 10 https://www.google.com -o /dev/null; then
    if [ "$($CUR_SIT)" != "200" -a ! -f /tmp/check.txt ]; then
        echo "Сайт mysite не доступен $DT." | mail -s "Сайт mysite не доступен $DT." -aFrom:site mymail@mail.ru
        touch /tmp/check.txt
    else
        rm -f /tmp/check.txt
    fi
Последний раз редактировалось olecya 30.06.2022 10:50, всего редактировалось 1 раз.
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 634
ОС: BSD/LINUX

Re: проверка сайта на доступность

Сообщение bars »

Уже допилил.
В начале добавил проверку.

Код: Выделить всё

if [ "$($CUR_SIT)" = "200" ]
then
  if [ -e /tmp/check.txt ]; then
    echo "Сайт сайт снова доступен $DT." | mail -s "Сайт сайт снова доступен $DT." -aFrom:test my@mail
    rm /tmp/check.txt
  fi
else
  if [ -e /tmp/check.txt ]; then
    exit 0
  fi
fi
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 634
ОС: BSD/LINUX

Re: проверка сайта на доступность

Сообщение bars »

olecya писала:
30.06.2022 10:47

Код: Выделить всё

  if curl -LI --connect-timeout 10 https://www.google.com -o /dev/null; then
    if [ "$($CUR_SIT)" != "200" -a ! -f /tmp/check.txt ]; then
        echo "Сайт mysite не доступен $DT." | mail -s "Сайт mysite не доступен $DT." -aFrom:site mymail@mail.ru
        touch /tmp/check.txt
    else
        rm -f /tmp/check.txt
    fi
Спасибо большое.
:drunk: :drinks:
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 634
ОС: BSD/LINUX

Re: [Решено] проверка сайта на доступность

Сообщение bars »

olecya писала:
30.06.2022 10:47
if [ "$($CUR_SIT)" != "200" -a ! -f /tmp/check.txt ]; then
Поясните пожалуйста ваши действия -a ! -f /tmp/check.txt ].
Стало интересно реализация вашего примера.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 676
ОС: debian, fedora (i3-wm)

Re: [Решено] проверка сайта на доступность

Сообщение olecya »

Да, это ошибка. Вот переработанный вариант. Отправляется единожды письмо если сайт оказывается не доступен. Как только сайт становится доступен так же отправляется одно письмо (первое) из череды проверок о доступности сайта:

Код: Выделить всё

    if [ "$($CUR_SIT)" != "200" ]; then
        if [ ! -f /tmp/check.txt ]; then
            echo "Сайт mysite не доступен $DT." | mail -s "Сайт mysite не доступен $DT." -aFrom:site mymail@mail.ru
            touch /tmp/check.txt
        fi
    else
        if [ -f /tmp/check.txt ]; then
            echo "Сайт mysite снова доступен $DT." | mail -s "Сайт mysite снова доступен $DT." -aFrom:site mymail@mail.ru
            rm /tmp/check.txt
        fi
    fi
Добавлено (16:50):
Или если не нужно сообщение о доступности сайта то последний блок с условием:
olecya писала:
30.06.2022 16:33

Код: Выделить всё

        if [ -f /tmp/check.txt ]; then
            echo "Сайт mysite снова доступен $DT." | mail -s "Сайт mysite снова доступен $DT." -aFrom:site mymail@mail.ru
            rm /tmp/check.txt
        fi
заменить на команду:

Код: Выделить всё

        rm -f /tmp/check.txt
Спасибо сказали: