Воспользовавшись опытом предыдущих статей о том, как выполнить резервное копирование в Mikrotik Routerboard с последующим получением файла резервной копии с Mikrotik Routerboard по FTP-протоколу, добавим возможности языка программирования Python и напишем скрипт, который будет создавать, получать и удалять файл резервной копии Mikrotik Routerboard.
Готовый скрипт:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import time
import datetime
from paramiko import SSHClient
from paramiko import AutoAddPolicy
import subprocess
mip = "192.168.4.253"
mlogin = "ubnt"
mpassword = "ubnt"
now_date = datetime.date.today()
ssh = SSHClient()
ssh.set_missing_host_key_policy(AutoAddPolicy())
ssh.connect(mip, port=22, username=mlogin, password=mpassword)
cmd = "/system backup save name=%s" % (now_date)
ssh.exec_command(cmd)
ssh.close()
ftp_query = "ftp://%s:%s@%s/%s.backup" % (mlogin, mpassword, mip, now_date)
ftp_get = subprocess.call(["wget", ftp_query])
time.sleep(2)
ssh = SSHClient()
ssh.set_missing_host_key_policy(AutoAddPolicy())
ssh.connect(mip, port=22, username=mlogin, password=mpassword)
cmd = "/file remove [find name=%s.backup]" % (now_date)
ssh.exec_command(cmd)
ssh.close()
Пояснения к скрипту:
Подключение необходимых модулей:
import time
import datetime
from paramiko import SSHClient
from paramiko import AutoAddPolicy
import subprocess
Данные для подключения к оборудованию:
mip = "192.168.4.253"
mlogin = "ubnt"
mpassword = "ubnt"
Определяем текущую дату. Значение заносим в переменную now_date:
now_date = datetime.date.today()
Работа с Mikrotik Routerboard по SSH протоколу:
ssh = SSHClient()
ssh.set_missing_host_key_policy(AutoAddPolicy())
ssh.connect(mip, port=22, username=mlogin, password=mpassword) - подставляем значения для соединения с Mikrotik Routerboard;
cmd = "/system backup save name=%s" % (now_date) - создаем запрос для создания файла резервной копии (именем файла будет текущая дата).
ssh.exec_command(cmd) - выполняем запрос;
ssh.close()
Создаем переменную, в которой будет храниться запрос к FTP-серверу Mikrotik Routerboard:
ftp_query = "ftp://%s:%s@%s/%s.backup" % (mlogin, mpassword, mip, now_date)
Получаем файл резервной копии Mikrotik Routerboard:
ftp_get = subprocess.call(["wget", ftp_query])
Выполняем задержку, чтобы скрипт успел создать и скопировать файл перед его удалением с Mikrotik Routerboard:
time.sleep(2)
Удаляем файл резервной копии с Mikrotik Routerboard:
ssh = SSHClient()
ssh.set_missing_host_key_policy(AutoAddPolicy())
ssh.connect(mip, port=22, username=mlogin, password=mpassword)
cmd = "/file remove [find name=%s.backup]" % (now_date)
ssh.exec_command(cmd)
ssh.close()
Рис.1. Директория, в которой находится скрипт.
Как мы видим, директория, в которой находится скрипт, пуста. Запустим его, чтобы убедиться в его работоспособности.
Рис.2. Работа скрипта.
Рис.3. Результат работы скрипта.
В директории появился еще один файл.
Рис.4. Mikrotik Routerboard раздел Files.
На устройстве Mikrotik Routerboard этого файла нет. Следовательно, скрипт выполнил свою работу правильно: создал файл, скопировал его и удалил, чтобы не занимать память в роутере.
Евгений Рудченко специально для ASP24.