Апр 302011
Сижу и думаю как бы день быстрее скоротать, решил на питоне написать скрипт по бэкапу пользовательских директорий и БД. А то большенсво моих скриптов на шеле.
Наш скрипт будет с функцией отправки сообщения о завершении сохраниеня данных на мыло, для этого отдельно зашифруем пароль наш в питоне.
Мы же не хотим его светить в открытом виде в скрипте.
$ python >>> import base64 >>> p = "Qq111111" >>> l = p.encode('base64') >>> print l UXExMTExMTE= >>>
Все у нас готов хеш пароля.
#!/usr/local/bin/python # -*- coding: utf-8 -*- # Поддержка в файле кириллици #Определеям модули import os,time import smtplib import email.utils import base64 from email.mime.text import MIMEText #Потовый ящики from_addr = 'mail@gmailcom' to_addrs = 'mail@mail.ru' # Указываем кодировку msg = MIMEText(text, "", "utf-8") # Создаем заголовок сообщения msg['To'] = email.utils.formataddr(('Кому', to_addrs)) msg['From'] = email.utils.formataddr(('От_кого', from_addr)) msg['Subject'] = 'Бэкап закончен!' # Параметры авторизации username = 'mail@gmail.com' # Дешифруем пароль p = "UXExMTExMTE=" pwd = p.decode('base64') #Определяем дату DATE = time.strftime('%Y%m%d') #тело письма text = 'backup закончен в:'+DATE #Поехали! #Сохраняем нашу БД или все бд. def mysql (): DES = '/usr/local/BD/' #директория куда покладуться сохранения BD = ">" + " " + target_dir + today + ".sql" os.system("mysqldump --all-databases -uUSER -pPASS "+" "+BD+" ") #Сохраняем базы mysql () #Сохраняем пользовательские диреткории def user_files (): DES = "/mnt/share/backup/do_obmen/" # директория куда покладуться сохранения SORS = "/mnt/do_obmen/" # Что копировать FIL = DES + DATE + ".tar.bz2" os.system("tar cjf"+" "+FIL+" "+SORS+" ") #Создаем архив user_files() #Отправка письма по завершению. server = smtplib.SMTP('smtp.gmail.com:587') server.starttls() server.login(username,pwd) server.sendmail(from_addr, to_addrs, msg.as_string()) server.quit()
Интересненько.
Я вот дорабтатываю ваш скрипт, и ни как не смогла сделать шифрование пароля, тоесть что бы в открытом виде не светить пароль в файле, а указать хеш.
Хмм , можно конечно за кодировать пароль, вставить хеш вместо самого пароля.
Но для этого нужно подгрузить модуль hashlib и спомощью него передать зашифрованный пароль…
Чуть поже выложу обновления скрипта.
Вот ссылка на получения хеша пароля likeunix.ru/md5sum.html
Почитав литературу, нашел функцию дешифровки пароля..но в ней есть косяк.как этот косяк обойти я еще не разобрался.
Для начало зашифруем пароль с помощью base64.
У питона есть модуль inport base64 для шифрования и дешифрования.
После шифрования определяем переменную y ей передаем хэш нашего пароля , но а потом уже .
base.b64decode после дешифровки пароль передается переменной экранированный одинарными кавычками,
Как убрать кавычки я еще не догнал как убрать.
# Дешифруем пароль
p = «UXExMTExMTE=»
pwd = p.decode(‘base64’)
Все, можите пользоваться на здоровье .
Скрипт готов к употреблению.
Спасибо! По пробовала. Все отлично.
А как сжать sql сохранения, сохранить в архив?
Добрый вечер.
Извени, что так долго не писал, праздники!
хмм, а если попробовать так :
os.system(«gzip»+» «+BD+».sql»)
ну или по аналогии как мы делали def user_files ():
Огромное спасибо, разобралась.
Сажусь на чтение литературы по python.
Интересный скрипт.
А реально ли как-нибудь дешифровать строку из sha1()
Просто в книге какой-то было как зашифровать, а вот если есть шифровка можно ли обратно..?
Нет нельзя, это алгоритм хэширования (с потерей данных), а не шифрование.
Значит шифровать нужно, например, методами из модуля Base 64?