проверка интернет-соединения н raspberry-pi с помощью python

Мониторинг интернет-соединения на Raspberry Pi: Python-скрипт для автоматических уведомлений по почте

Python-скрипт для мониторинга интернет-соединения на Raspberry Pi и получения email-уведомлений при восстановлении связи. Пошаговое руководство и полный код.

Обзор кода

Скрипт выполняет следующие основные функции:

  1. Проверяет наличие интернет-соединения
  2. Отправляет email-уведомление при восстановлении соединения
  3. Работает в бесконечном цикле, выполняя проверки каждую минуту

Импорт необходимых библиотек

Python
import smtplib
import requests
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from datetime import datetime
import time

Эти библиотеки используются для отправки email (smtplib), выполнения HTTP-запросов (requests), создания email-сообщений (email.mime), работы с датой и временем (datetime) и для создания задержек (time).

Проверка интернет-соединения

Python
def check_internet():
    try:
        response = requests.get('http://www.google.com', timeout=5)
        return True
    except requests.ConnectionError:
        return False

Эта функция пытается подключиться к Google.com с таймаутом в 5 секунд. Если подключение успешно, возвращается True, иначе — False.

Отправка email-уведомления

Python
def send_email():
    from_email = 'echo@e3d16f303c46.spectrum.myjino.ru'
    to_email = 'check@e3d16f303c46.spectrum.myjino.ru'
    password = '@Af7Z4tiqA#XEYeJDvJs'

    msg = MIMEMultipart()
    msg['From'] = from_email
    msg['To'] = to_email
    msg['Subject'] = "Malina online"

    body = f"When: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"
    msg.attach(MIMEText(body, 'plain'))

    try:
        server = smtplib.SMTP('smtp.abcde.ru', 587)
        server.starttls()
        server.login(from_email, password)
        text = msg.as_string()
        server.sendmail(from_email, to_email, text)
        server.quit()
        print("Имейл отправлен")
        return True
    except Exception as e:
        print(f"Имейл не отправлен: {e}")
        return False

Эта функция создает и отправляет email-уведомление. Она использует SMTP-сервер для отправки сообщения. В теле письма указывается текущее время.

Основной цикл

Python
def main():
    connection_lost = False
    while True:
        if check_internet():
            if connection_lost:
                if send_email():
                    connection_lost = False
        else:
            connection_lost = True
        time.sleep(60)

if __name__ == "__main__":
    main()

Основной цикл программы выполняется бесконечно. Он проверяет наличие интернет-соединения каждую минуту. Если соединение было потеряно и затем восстановлено, отправляется email-уведомление.

Применение

Этот скрипт может быть полезен в следующих сценариях:

  1. Мониторинг удаленных устройств Raspberry Pi
  2. Отслеживание стабильности интернет-соединения
  3. Автоматическое уведомление о восстановлении связи после сбоев

Полный код

Полный код в репозитории на Гитхабе.

Статья по теме

Автозапуск Python-скриптов на Linux: настройка systemd