Статья участвует в Конкурсе статей по настройке оборудования Mikrotik операционной системой RouterOS
Автор: Виктория
На оборудовании MikroTik есть два способа резервного копирования с помощью команд system backup и export.
При использовании system backup вы получаете полную резервную копию конфигурации устройства, включая пользователей. Но у этого варианта есть два существенных недостатка:
1. При использовании system backup save во внутреннюю память маршрутизатора создается файл бэкапа. А у этой памяти имеется ограниченный ресурс на количество циклов записи, в результате она может быстро выйти из строя.
2. Второй минус, это то, что полученный файл будет не текстовым и посмотреть его содержимое сложно.
При использовании же команды export на выходе вы получаете текстовый файл со списком всех команд. Большой плюс текстового файла в том что вы можете увидеть сами команды настройки, и, к примеру, сравнить версии конфигураций и увидеть различия. Из минусов, при использовании export не экспортируются некоторые параметры, например локальные пользователи. Еще один существенный плюс использования export - это можно вывести конфигурацию на экран без использования внутренней памяти маршрутизатора.
Предлагаю свой вариант централизованного сбора конфигураций оборудования с помощью команды export и скрипта на expect.
Установка на Centos
- Уcтанавливаем expect и текстовый редактор nano.
yum install nano expect –y - Создаем папку для нашего скрипта и переходим в неё
mkdir /opt/backup
cd /opt/backup - Создаем наш скрипт
nano mikrotik.exp - Вводим код скрипта по окончании сохраняем нажав Ctr+X, Y, Enter.
- Делаем файл запускаемым
chmod +x mikrotik.exp - Запускаем и проверяем
./mikrotik.exp ip-адрес логин пароль - Процесс выполнения скрипта выводится на экран. При удачном выполнении будет создан файл с конфигурацией с именем «ip адрес_дата_время»
- При необходимости сделать бэкап нескольких устройств, то можно сделать батничек, например mikrotik.sh с следующим содержанием:
/opt/backup/mikrotik.exp ip-адрес1 логин пароль
/opt/backup/mikrotik.exp ip-адрес2 логин пароль
/opt/backup/mikrotik.exp ip-адрес3 логин пароль
Скрипт mikrotik.exp:
#!/usr/bin/expect set timeout 10 log_user 0 set HOST_IP [lindex $argv 0] set USER_LOGIN [lindex $argv 1] set USER_PASS [lindex $argv 2] set error_msg ""; if { [string length $HOST_IP] > 0 & [string length $USER_LOGIN] > 0 & [string length $USER_PASS] > 0} { spawn ssh -q -o StrictHostKeyChecking=no $USER_LOGIN+ct@$HOST_IP expect { timeout { set error_msg "$HOST_IP Error: Failed to get password prompt.\n"; send_user "\n$error_msg" } eof { set error_msg "$HOST_IP Error: SSH failure for $HOST_IP.\n"; send_user "\n$error_msg" } "*assword:" { send "$USER_PASS\r" expect { default { set error_msg "$HOST_IP Error: Could not login. Incorrect password.\n"; send_user "\n$error_msg"; } "*] >" { send_user "\n$HOST_IP login OK.\n"; match_max 500000 set output [open ${HOST_IP}_[clock format [clock seconds] -format {%Y-%m-%d_%H-%M}] w] send "export terse\r" expect "\r\n" expect { default { set error_msg "$HOST_IP Error: incorrect prompt after command\n"; send_user "\n$error_msg" } "\r\r" { puts $output $expect_out(buffer) send_user "$HOST_IP OK.\n"; close $output } } send "quit\r" # close ssh session close } } } } } else { send_user "Error: incorrect param.\n"; exit 1 }
Дмитрий Старков