Эта статья посвящена написанию скриптов для выполнения резервного копирования с нескольких устройств 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 "Нет связи с сервером"
Рис.1. Результат работы скрипта.
В результате работы мы получили файлы резервной копии Mikrotik Routerboard.
Евгений Рудченко специально для ASP24.

