Рубрики
Без рубрики

Как получить оповещение электронной почты, когда ваш сайт не работает, используя оболочку и Python?

Есть много способов отслеживать и установить оповещения для вашего веб-сервера, используя сторонние приложения, но они не … Теги с Python, CodeNewie, Linux, Ubuntu.

Есть много способов отслеживать и устанавливать оповещения для вашего веб-сервера, используя приложения третьего лица, но они не поставляются с бесплатным, будь то облаками Amazon. В этом посте я собираюсь показать, как мы можем написать и настроить наш собственный инструмент оповещения с несколькими линиями кода. Однако, прежде чем идти дальше в коды, давайте посмотрим, какие команды и утилиты доступны в Linux для мониторинга здоровья веб-сервера.

Все приведенные ниже команды очень базовые и доступны на всех ароматах Linux. Я управляю этими командами на Ubuntu 20.04 LTS для ниже демо

Что мы узнаем в этой статье?

📗 Как проверить, работает ли веб-сайт и запущен или вниз? 📙 Как написать базовый скрипт оболочки? 📗 Как вызвать программу Python из Shell Script? 💡 Как отправить электронное письмо с помощью Python?

Как проверить, работает ли веб-сервер и работает?

Есть много команд и утилит для мониторинга, если ваш сайт или приложение работают и работает нормально. Я перечислил несколько из них. Давайте оформить заказ

👉 Curl 👉 wget 👉 пинг

Скручивание

Curl Это очень мощная утилита для отправки и получения данных по многим поддерживаемым протоколам, таким как HTTP, FTP, SMTP … Мы собираемся использовать скручивание с участием Я Варианты для получения заголовков с веб-сайта. На основании заголовка мы можем идентифицировать, если сервер вниз или вверх. Давай попробуем

* Использование: * Curl -i. Сервер IP.

shaikh@ubuntu:~/scripts$ curl -I "https://hashnode.com"
HTTP/2 200 
date: Thu, 29 Oct 2020 17:35:18 GMT
content-type: text/html; charset=utf-8
cache-control: public, s-maxage=1800, max-age=0
etag: W/"4436a-AFOlSSR9igz5hRyOL+SdGTPJfxk"
vary: Accept-Encoding
x-frame-options: Deny
x-powered-by: Next.js
cf-cache-status: HIT
age: 1020
cf-request-id: 061706b33c0000051308a22000000001

Как показано выше Curl -i Возвращает заголовок и самую первую строку (HTTP/2 200) сообщает нам, что веб-сервер для Hashnode не работает и работает. Обратите внимание, что сервер работает и работает до тех пор, пока код ответа составляет 200 301302,308. В приведенном выше примере код ответа – 200, так его.

врач

Это еще одна утилита в Linux, используемая в качестве Network Doader. Мы будем использовать вариант -S Чтобы заставить заголовки с сайта. Использование:

WGET -S. Сервер: Это будет вырезать и загружать заголовки и страницы сайта

WGET -S – SPIDER SERVER: Это будет работать точным способом, как указано выше, за исключением того, что он будет вести себя как Web Spider и не загрузит страницы.

shaikh@ubuntu:~/scripts$ wget -S --spider http://shaikhu.com
URL transformed to HTTPS due to an HSTS policy
Spider mode enabled. Check if remote file exists.
--2020-10-29 10:47:55--  https://shaikhu.com/
Resolving shaikhu.com (shaikhu.com)... 192.241.200.144
Connecting to shaikhu.com (shaikhu.com)|192.241.200.144|:443... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 302 Found
  Alt-Svc: h3-29=":443"; ma=2592000
  Content-Length: 206
  Content-Type: text/plain; charset=utf-8
  Date: Thu, 29 Oct 2020 17:47:55 GMT

Как показано выше, возвращенный код ответа – 302 Для перенаправления, поэтому наш сервер вверх.

пинг

Пинг является наиболее распространенной утилитой для проверки здоровья веб-сервера. Он отправляет ICMP Echo_Request в сетевой хост, чтобы получить информацию. Мы собираемся использовать -C Подсчитайте вариант для отправки N Количество пакетов запроса.

ИСПОЛЬЗОВАНИЕ

Сервер Count Count Server выше отправит в COUNT NO PACETS PACKES на сервер

shaikh@ubuntu:~/scripts$ ping -c 3 shaikhu.com
PING hashnode.network (192.241.200.144) 56(84) bytes of data.
64 bytes from 192.241.200.144 (192.241.200.144): icmp_seq=1 ttl=55 time=38.2 ms
64 bytes from 192.241.200.144 (192.241.200.144): icmp_seq=2 ttl=55 time=34.0 ms
64 bytes from 192.241.200.144 (192.241.200.144): icmp_seq=3 ttl=55 time=36.0 ms

--- hashnode.network ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 33.954/36.039/38.178/1.724 ms
shaikh@ubuntu:~/scripts$ 

Как показано выше, мы отправили 3 пакета и получили 3 пакета, так что это означает, что наш сайт работает и работает

Как написать базовый скрипт оболочки?

Теперь, когда мы знаем, какие команды и утилита используют, чтобы узнать статус нашего сайта, поэтому давайте начнем. Мы собираемся выдать команду

Шаг 1: Создайте новый файл для скрипта оболочки

Давайте создадим новый файл с именем Alert.sh и сохранить его в свою домашнюю папку. Мы можем использовать любую из вышеуказанной команды, чтобы узнать статус сайта. Я собираюсь использовать wget Вариант веб-паука, чтобы получить детали. Однако вы можете использовать любой из них.

Перед записью любого сценария обратите внимание на точное расположение башмак

shaikh@ubuntu:~/scripts$ which bash
/usr/bin/bash 

Теперь давайте начнем писать сценарий Shell alert.sh

#!/usr/bin/bash
MYHOST="https://YOUR WEBSITE ADDRESS"
if wget --spider -S $MYHOST 2>&1 | grep -w "200\|301\|302\|308" > /dev/null
then
echo "server is up"
else
#Server is down"
/usr/bin/python3 send_alert.py
fi

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

В самой первой линии мы предоставляем местоположение Bash который был найден на предыдущем шаге выше Тогда мы сохранили адрес нашего сайта в переменной имени MyHost Из строки № 3 мы выполняем wget команда в Если еще утверждение. Если код возврата из WGET отличается от 200 301, 302 и 308, то управление будет двигаться для остального блока с учетом сервера неисправна или недоступна. На этом шаге вы можете изменить команду на пинг или скручивание как ты как

В еще Блок мы выполняем файл Python с именем send_alert.py отправить уведомление по электронной почте. Вы можете игнорировать этот шаг, если вы отправляете электронную почту с помощью Mailx Package Linux в Shell Script. Однако я не хочу устанавливать какую-либо стороннюю библиотеку и хотите использовать существующую библиотеку Python, чтобы отправить электронную почту.

Как отправить электронное письмо с помощью Python?

Написание электронного письма с помощью Python очень просто. Ни одна сторонняя библиотека не требуется отправить электронное письмо. Здесь мы используем встроенную библиотеку Python smtplib отправить электронную почту. Как показано, остальная часть кода довольно прост. Мы определили From_email , Пароль , To_email. , Заголовок и наконец тело

Давайте посмотрим, что наше send_alert похоже

import smtplib

FROM = 'FROM EMAIL ADDRESS'
PSWD = 'YOUR PASSWORD'

TO = 'TO EMAIL ADDRESS'

#Subject and header
SUB = 'Subject: Alert for shaikhu.com \n'
header = 'To:' + TO + '\n' + 'From: ' + FROM + '\n' + SUB

#Message
body = """
MAY DAY! MAY DAY!! MAY DAY!!!
Your webserver for shaikhu.com is DOWN."""
message = header + body
#Define function to send email
def sendalert(msg):

    smtpObj = smtplib.SMTP('smtp.mail.yahoo.com', 587)
    smtpObj.ehlo()

    smtpObj.starttls()
    smtpObj.login(FROM, PSWD)

    smtpObj.sendmail(FROM,TO,msg)
    smtpObj.quit()
if __name__ == '__main__':
    sendalert(message)

Поздравляю !! 🥳. Мы только что написали наш собственный скрипт для мониторинга нашего сервера и отправьте нам уведомление по электронной почте, если оно падает. Теперь все, что нам нужно сделать, это поставить этот скрипт на таблицу планировщика или CRON, чтобы сценарий запустился каждый n Нет минут и продолжайте мониторинг нашего сайта.

Добавьте работу в планировщик или Crontab

Если вы хотите знать, как настроить планировщик заданий, используя Crontab, пожалуйста, проверьте мою статью https://shaikhu.com/how-to-schedule-and-manage-tasks-uss-crontab.

*/5  *  *  *  *  sh alert.sh

В соответствии с таблицей CRON, наш Alert.sh будет выполнен каждые 5 минут. Это означает, что Alert.sh будет проверять наш сайт здоровья каждые 5 минут и отправит мне электронное письмо, если веб-сайт недоступен.

Так выглядит электронное письмо от моего сценария.

Вывод

Хотя есть много веб-сайтов, предоставляют услуги оповещения сайта, но не все они бесплатны. Как видно в этой статье с несколькими линиями кода, вы можете создать собственное приложение Alert, которое сохранит мониторинг вашего веб-сайта каждый момент и отправит уведомления по электронной почте, когда его вниз.

Мы узнали о таких важных командах и кодах, таких как как проверить веб-сайт Down или UP и как отправить электронную почту с помощью Python, а также как написать базовый скрипт оболочки.

Надеюсь, что этот учебник помог вам узнать что-то новое сегодня. Дайте мне знать ваши мысли в разделе комментариев 😃.

использованная литература

  1. https://docs.cython.org/3/library/smtplib.html#smtplib.smtp.sendmail

Оригинал: “https://dev.to/shaikh/how-to-get-email-alert-when-your-website-is-down-using-shell-and-python-1o62”