Апр 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()

  11 комментариев to “скрипт backup python”

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

  2. Хмм , можно конечно за кодировать пароль, вставить хеш вместо самого пароля.
    Но для этого нужно подгрузить модуль hashlib и спомощью него передать зашифрованный пароль…
    Чуть поже выложу обновления скрипта.
    Вот ссылка на получения хеша пароля likeunix.ru/md5sum.html

  3. Почитав литературу, нашел функцию дешифровки пароля..но в ней есть косяк.как этот косяк обойти я еще не разобрался.
    Для начало зашифруем пароль с помощью base64.
    У питона есть модуль inport base64 для шифрования и дешифрования.
    После шифрования определяем переменную y ей передаем хэш нашего пароля , но а потом уже .
    base.b64decode после дешифровки пароль передается переменной экранированный одинарными кавычками,
    Как убрать кавычки я еще не догнал как убрать.

  4. # Дешифруем пароль
    p = «UXExMTExMTE=»
    pwd = p.decode(‘base64’)

    Все, можите пользоваться на здоровье .
    Скрипт готов к употреблению.

  5. Спасибо! По пробовала. Все отлично.
    А как сжать sql сохранения, сохранить в архив?

  6. Добрый вечер.
    Извени, что так долго не писал, праздники!
    хмм, а если попробовать так :
    os.system(«gzip»+» «+BD+».sql»)
    ну или по аналогии как мы делали def user_files ():

  7. Огромное спасибо, разобралась.
    Сажусь на чтение литературы по python.

  8. Интересный скрипт.

  9. А реально ли как-нибудь дешифровать строку из sha1()
    Просто в книге какой-то было как зашифровать, а вот если есть шифровка можно ли обратно..?

  10. Нет нельзя, это алгоритм хэширования (с потерей данных), а не шифрование.

  11. Значит шифровать нужно, например, методами из модуля Base 64?

 Leave a Reply

(required)

(required)

41 Запросов к базе. 0,426 Генерации страницы, 36MB Использование памяти.
Вы зашли с IP: 54.224.247.42