Mikrotik: Powershell-скрипт для массового резервного копирования.
В Mikrotik Router OS существует два вида резервного копирования.
1. Бинарный бекап. В этом случае создается полная резервная копия настроек, включая MAC-адреса. Этот вариант хорошо подходит для восстановления на том же устройстве, а вот с переносом на другой девайс могут возникнуть проблемы. (совпадение MAC-адресов, перепутанные имена интерфейсов и прочие радости)
2. Текстовый бекап. Тут создается текстовый скрипт с настройками. Можно открыть блокнотом и посмотреть как было настроено, а также запустить на другом девайсе, и если какие-то настройки несовместимы, поправить руками.
В принципе и первый и второй бекапы делаются одной командой в терминале. Однако при количестве устройств больше 2-х десятков делать копии вручную весьма уныло. Поэтому был написан скрипт, который автоматизирует данный процесс.
Освоить MikroTik Вы можете с помощью онлайн-куса «Настройка оборудования MikroTik». Курс содержит все темы, которые изучаются на официальном курсе MTCNA. Автор курса – официальный тренер MikroTik. Подходит и тем, кто уже давно работает с микротиками, и тем, кто еще их не держал в руках. В курс входит 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.
Для скрипта был использован powershell модуль для работы с Mikrotik API, взятый отсюда. Автору модуля -- огромное спасибо!
Идея скрипта довольно простая. Есть текстовый файлик со строками вида:
IP-аддрес логин пароль id-устройства
Скрипт подключается по API используя IP, логин, пароль, посылает команды для резервного копирования, ждет какое-то время пока команды выполняться и по ftp забирает файлы резервных копий. Файлы складываются в папку с текущей датой. К имени файлов добавляется id-устройства. Повторять пока не закончатся строки в файле.
Текст скрипта:
# Импортируем модуль для работы с api
Import-Module <путь к mikrotik.dll>
# Назначаем переменные
New-Variable -Name ip
New-Variable -Name user
New-Variable -Name pass
New-Variable -Name ID
New-Variable -Name dt
$dt = Get-Date -Format d
# Создаем папку с датой
New-Item -Path "<Путь к папке>\$dt" -ItemType "directory"
New-Variable -Name folder -Value "<Путь к папке>\$dt"
# Цикл
Get-Content <Путь к файлу с параметрами> | Foreach-Object{
# Читаем значения из файла
$var = $_.Split(' ')
$ip = $var[0]
$user = $var[1]
$pass = $var[2]
$id = $var[3]
# Подключаемся к микротику
$C=Connect-Mikrotik -IPaddress $ip -UserName $user -Password $pass
# Посылаем команды для бекапа
Send-Mikrotik -Connection $C -Command "/export" -Attributes "file=backup_config.rsc"
Send-Mikrotik -Connection $C -Command "/system/backup/save" -Attributes "name=Mik_backup"
# Ставим задержку
Start-Sleep 30
# Копируем rsc файл по ftp
$download_url = "ftp://$ip/backup_config.rsc"
$local_path = "$folder\$ID.backup_config.rsc"
$WebClient = New-Object System.Net.WebClient
$WebClient.Credentials = New-Object System.Net.NetworkCredential($user, $pass)
$WebClient.DownloadFile($download_url, $local_path)
# Копируем backup файл по ftp
$download_url = "ftp://$ip/Mik_backup.backup"
$local_path = "$folder\$ID.Mik.backup"
$WebClient = New-Object System.Net.WebClient
$WebClient.Credentials = New-Object System.Net.NetworkCredential($user, $pass)
$WebClient.DownloadFile($download_url, $local_path)
# отключаемся от микротика
Disconnect-Mikrotik -Connection $C
}
# конец цикла
Для подключения к устройствам по API, нужно открыть на input порт 8728 для IP-адресса с которого будем подключаться. Указан порт по умолчанию можно поменять в IP --> Services. Также желательно добавить этот адресс в IP --> Services в поле Available From. чтобы доступ к API не смогли получить всякие нехорошие ребята.
Аналогичное нужно сделать для доступа по FTP, порт по умолчанию -- 21.
Скачать костыль скрипта и модуль для работы с API можно отсюда.
Освоить MikroTik Вы можете с помощью онлайн-куса «Настройка оборудования MikroTik». Курс содержит все темы, которые изучаются на официальном курсе MTCNA. Автор курса – официальный тренер MikroTik. Подходит и тем, кто уже давно работает с микротиками, и тем, кто еще их не держал в руках. В курс входит 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.