#!/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 раз.
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 раз.
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
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
Да, это ошибка. Вот переработанный вариант. Отправляется единожды письмо если сайт оказывается не доступен. Как только сайт становится доступен так же отправляется одно письмо (первое) из череды проверок о доступности сайта:
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):
Или если не нужно сообщение о доступности сайта то последний блок с условием:
if [ -f /tmp/check.txt ]; then
echo "Сайт mysite снова доступен $DT." | mail -s "Сайт mysite снова доступен $DT." -aFrom:site mymail@mail.ru
rm /tmp/check.txt
fi