Меню
Контакты
107023, Москва, пл. Журавлёва, 10с3, подъезд 31, офис 309
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Интернет-магазин
сетевого оборудования
Москва +7 (495) 103-41-03 +7 (915) 420-28-94
107023, Москва, пл. Журавлёва, 10с3, подъезд 31, офис 309
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Заказать звонок

Автоматизируем резервное копирование в Mikrotik Routerboard

 12 Янв 2012    MikroTik, Практика и программирование MikroTik

Эта статья посвящена написанию скриптов для выполнения резервного копирования с нескольких устройств Mikrotik Routerboard.

Для этого создадим два файла: index.py и backup.py.

Файл backup.py. Это функция для выполнения резервного копирования:

 

#!/usr/bin/python

# -*- coding: utf-8 -*-

import time

import datetime

from paramiko import SSHClient

from paramiko import AutoAddPolicy

import subprocess

import shutil

def f_backup(server_name, mikrotik_ip, mikrotik_login, mikrotik_passw):

now_date = datetime.date.today()

ssh = SSHClient()

ssh.set_missing_host_key_policy(AutoAddPolicy())

ssh.connect(mikrotik_ip, port=22, username=mikrotik_login, password=mikrotik_passw)

cmd = "/system backup save name=%s_%s" % (now_date, server_name)

ssh.exec_command(cmd)

ssh.close()

ftp_query = "ftp://%s:%s@%s/%s_%s.backup" % (mikrotik_login, mikrotik_passw, mikrotik_ip, now_date, server_name)

ftp_get = subprocess.call(["wget", ftp_query])

time.sleep(2)

ssh = SSHClient()

ssh.set_missing_host_key_policy(AutoAddPolicy())

ssh.connect(mikrotik_ip, port=22, username=mikrotik_login, password=mikrotik_passw)

cmd = "/file remove [find name=%s_%s.backup]" % (now_date, server_name)

ssh.exec_command(cmd)

ssh.close()

filename = "%s_%s.backup" % (now_date, server_name)

shutil.move(filename, '/home/user/Mikrotik_backup/warehouse')

Разберем скрипт backup.py:

#!/usr/bin/python

Подключаем модули.

import time

import datetime

from paramiko import SSHClient

from paramiko import AutoAddPolicy

import subprocess

import shutil

Создаем функцию резервного копирования.

def f_backup(server_name, mikrotik_ip, mikrotik_login, mikrotik_passw): - создаем функцию f_backup, которая будет принимать параметры для подключения к Mikrotik Routerboard.

now_date = datetime.date.today() - определяем текущую дату.

ssh = SSHClient()

ssh.set_missing_host_key_policy(AutoAddPolicy())

ssh.connect(mikrotik_ip, port=22, username=mikrotik_login, password=mikrotik_passw)

cmd = "/system backup save name=%s_%s" % (now_date, server_name) — выполняем команду для резервного копирования в Mikrotik Routerboard. В качестве имени файла, который будет получен в результате выполнения команды, подставим текущую дату и имя сервера, для которого выполняется резервное копирование.

ssh.exec_command(cmd)

ssh.close()

ftp_query = "ftp://%s:%s@%s/%s_%s.backup" % (mikrotik_login, mikrotik_passw, mikrotik_ip, now_date, server_name) — формируем запрос для получения файла по FTP-протоколу.

ftp_get = subprocess.call(["wget", ftp_query]) — выполняем FTP-запрос.

time.sleep(2)

Удаляем файл резервной копии с Mikrotik Routerboard:

ssh = SSHClient()

ssh.set_missing_host_key_policy(AutoAddPolicy())

ssh.connect(mikrotik_ip, port=22, username=mikrotik_login, password=mikrotik_passw)

cmd = "/file remove [find name=%s_%s.backup]" % (now_date, server_name)

ssh.exec_command(cmd)

ssh.close()

filename = "%s_%s.backup" % (now_date, server_name) — определяем имя полученного файла.

shutil.move(filename, '/home/user/Mikrotik_backup/warehouse') — перемещаем полученный файл в директорию warehouse.

Файл index.py:

#!/usr/bin/env python

# -*- coding: utf_8 -*-

Импортируем созданный нами скрипт для выполнения резервного копирования в Mikrotik Routerboard:

import backup

Создаем список с данными об устройствах Mikrotik Routerboard, для которых будет выполнятся резервное копирование:

devices = [['Server1', 'ubnt', 'ubnt', '192.168.4.236'], ['Server2', 'ubnt', 'ubnt', '192.168.99.4']]

С помощью цикла for извлекаем отдельно данные о каждом устройстве. Создаем переменные для подключения к  Mikrotik Routerboard:

for i in devices:

server_name = i[0]

mikrotik_login = i[1]

mikrotik_passw = i[2]

mikrotik_ip = i[3]

Вызываем функцию для резервного копирования:

try:

backup.f_backup(server_name, mikrotik_ip, mikrotik_login, mikrotik_passw)

except :

print "Нет связи с сервером"

 

Автоматизируем резервное копирование в Mikrotik Routerboard

Рис.1. Результат работы скрипта.

 

В результате работы мы получили файлы резервной копии Mikrotik Routerboard.

 

Евгений Рудченко специально для ASP24.