Рассматриваем скрипт для отправки смс администратору в случае, если связь с Mikrotik Routerboard отсутствует.
Разбираем созданный скрипт:
#!/usr/bin/python
# -*- coding: utf-8 -*-
Импортируем необходимые модули:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.header import Header
import email
import mimetypes
import os
Создаем функцию для отправки писем. Имя функции - mail, и она будет принимать значение переменной mail_text (текст письма):
def mail(mail_text):
mail_from = 'asp24@gmail.com' # отправитель
mail_to = '380684545342@sms.beeline.ua' # Получатель
mail_subj = 'No WORK!' # заголовок письма
mail_coding = 'windows-1251
Параметры SMTP-сервера:
smtp_server = "smtp.gmail.com"
smtp_port = 587
smtp_user = "asp24@gmail.com" # пользователь smtp
smtp_pwd = "asp24pass" # пароль smtp
Формирование сообщения:
multi_msg = MIMEMultipart()
multi_msg['From'] = Header(mail_from, mail_coding)
multi_msg['To'] = Header(mail_to, mail_coding)
multi_msg['Subject'] = Header(mail_subj, mail_coding)
msg = MIMEText(mail_text.encode('cp1251'), 'plain', mail_coding)
msg.set_charset(mail_coding)
multi_msg.attach(msg)
Отправка:
smtp = smtplib.SMTP(smtp_server, smtp_port)
smtp.ehlo()
smtp.starttls()
smtp.ehlo()
smtp.login(smtp_user, smtp_pwd)
smtp.sendmail(mail_from, mail_to, multi_msg.as_string())
smtp.quit()
Перейдем к редактированию основного скрипта, из которого будет вызываться функция.
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import time
import subprocess
Импортируем модуль с новой функцией import nowork_sms
ip_list = ["192.168.4.1", "192.168.4.2", "10.0.0.25", "10.0.0.26"]
while 1:
for ip in ip_list:
ping = subprocess.call(["ping", "-c 4", ip])
if ping == 0:
print u"Все хорошо"
else:
print u"Маршрутизатор %s не доступен" % (ip)
Вызов функции. В ходе выполнения скрипт определяет, какой IP не доступен и вызывает функцию mail подставляя переменную ip, то есть ip Mikrotik Routerboard:
nowork_sms.mail(ip)
subprocess.call(["play", "pick2.wav"])
time.sleep(15)
Рис.1. Нет отправленных.
Рис.2. Работа скрипта.
В ходе работы скрипт определил, что Mikrotik Routerboard с IP-адресом 10.0.0.25 не доступен и вызвал функцию nowork_sms.mail(ip), подставив в нее значение IP-адреса.
Рис.3. Отправленные письма.
Перейдя в раздел "отправленные" мы видим, что было отправлено письмо с IP-адресом неработающего Mikrotik Routerboard и в скором времени администратор получит смс.
Евгений Рудченко специально для ASP24.



