E-mail и backup
Примеры Python » Взаимодействие с Интернетом python email, python send email, python отправка email
В этом материале мы рассмотрим основные возможности python полезные системному администратору. Естественно, многие скажут, что зачем тут нужен Python, если можно сделать все значительно проще написав несложный bash-скрипт. Однако, Python открывает нам широкие возможности для последующего улучшения скрипта, а заодно можно посмотреть, что он умеет в работе с электронной почтой.
Для чего мне это нужно? Есть у меня один проект, он еще молодой, в сети недавно, пока не раскручен, только начинается формирование клиентской базы. Запущен он на VDS среднего качества, и хостер не самый лучший. Недавно случился какой-то сбой у моей VDS-ки, восстановление оказалось невозможным, в результате навсегда потерялись данные нескольких клиентов.
Проект этот коммерческий, поэтому данные терять никак нельзя. Поэтому было решено создать систему автоматического создания резервных копий. Хоть делаю я это уже не первый раз, все же не хочется перечитывать все эти руководства, лучше изобрету свой велосипед.
Итак, что нам нужно: скрипт должен уметь создавать архив папки с файлами (медиа), бэкапить базу данных и делать ее архив, затем отправлять все это мне на почту, указывая тему и дату.
Вот комментированный исходный код скрипта:
# -*- coding: utf-8
import os
import time
from smtplib import SMTP
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEBase import MIMEBase
from email import Encoders
# от кого и кому отправлять
fromaddr = "from@rambler.ru"
toaddr = "to@yandex.ru"
# дамп БД и медиафайлы сжимаем в файл buckup.tar.gz
os.system("mysqldump -u [пользователь] --password=[пароль] [БД] [таблица1] [таблица2]> dump.sql")
os.system("tar -zcf backup.tar.gz dump.sql [путь к каталогу с медиа файлами]")
# создаем почтовое сообщение
msg = MIMEMultipart()
# заполняем поля отправителя, адресата и тему сообщения
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = 'backup '+time.asctime()
# текстовая часть сообщения (не забываем указать кодировку)
msg.attach(MIMEText("Текстовое вложение", "plain", "utf-8"))
# прикрепляем файл backup.tar.gz к почтовому сообщению
att = MIMEBase('application', 'octet-stream')
att.set_payload(open("backup.tar.gz", "rb").read())
Encoders.encode_base64(att)
att.add_header('Content-Disposition', 'attachment; filename="backup.tar.gz"')
msg.attach(att)
# соединяемся с почтовым сервером и выполняем авторизацию
server = SMTP('mail.rambler.ru', 587)
server.ehlo()
server.starttls()
server.ehlo()
server.login("почтовый логин", "пароль")
# отправляем сформированное сообщение, после чего выходим
server.sendmail(fromaddr, toaddr, msg.as_string())
server.quit()
Осталось поставить крипт в cron и расслабиться.
Способ довольно легкий, но благодаря ему можно сохранить много времени и нервов, если случится подобная неприятная ситуация. Естественно, чтобы все работала стабильно, необходимо еще внести в скрипт конструкцию try…except. И если не получилось отправить письмо, то спустя определённое время должна совершаться повторная отправка.
А если вам нужны драйверы для какого-либо устройства, то заходите на сайт http://www.helpjet.net/. Сервис удобен тем, что все драйверы распределены по производителям и категориям устройств, поэтому поиск нужного не займет много времени. Все драйверы постоянно обновляются, поэтому данные всегда актуальные.
- Зачем интернет-казино Фараон сайт-близнец?
- Открой новые возможности с Казино Вулкан и проводи свой досуг с пользой
- Все, что вы хотите знать об игровых автоматах Вулкан
- Элитный отдых с Vulcan Club Deluxe
- Казино Тигр де кристал – лучшее онлайн казино?
- Как создать и раскрутить интернет магазин?
- Онлайн казино Play Dom: ассортимент, преимущества
Прекрасный код :)