Как управлять сотней MikroTik используя встроенные возможности

Имея в управлении большое количество роутеров MikroTik, невольно задумываешься как автоматизировать управление. Я решил пойти самым простым путем и управлять сотней MikroTik'ов используя…MikroTik.

Общая информация

RouterOS можно настраивать, используя файлы *.rsc в которых по-сути содержатся команды терминала, которые выполняются последовательно с начала файла. Начиная с прошивки v5.12 можно делать частичный экспорт конфигурации.


Пример как выглядит выгрузка настроенных IP адресов — /ip address export file=address

# aug/20/2018 11:11:42 by RouterOS 6.42.6
# software id = ####-####
#
# model = 951Ui-2HnD
# serial number = ????????????
/ip address
add address=10.254.0.1/24 interface=bridge1 network=10.254.0.0


Здесь указаны общая информация об оборудовании и соответственно команды для внесения настроек.

Теперь можно просто взять роутер внести необходимые настройки, протестировать работу и сделать export на все роутеры. В RouterOS есть автоматическая возможность выполнять скрипты настройки. Но есть 2 условия которые нужно соблюдать. Первый, файл должен иметь имя *.auto.rsc и второй, файл должен быть загружен только через FTP.

С первым понятно, со вторым придется 1 раз поработать руками и сделать настройку доступа по протоколу FTP к роутеру. По умолчанию я отключал этот протокол, если он у вас активен, вам легче, а мне пришлось зайти на каждый роутер и настроить доступ.

Для облегчения доступа и безопасности я использую внутреннюю сеть, построенную на OpenVPN. Метод ее организации тема для отдельной статьи.

Далее никакой магии, исключительно дело техники. Небольшой скрип, позволит нам залить файл, который мы экспортировали на все необходимые устройства.

:global done
:set done false
:global x
:set x 2
while (!$done) do={
:local checkip [/ping "10.10.10.$x" count=1]
:if (checkip != 0) do={
tool fetch address="10.10.10.$x" src-path=address.rsc user=Username password=Password port=21 upload=yes mode=ftp dst-path=address.auto.rsc
}
:set x ($x+1)
:if ($x=102) do= {:set done true}
}


Данный скрип перебирает адреса из диапазона 10.10.10.2 — 10.10.10.101, проверяет доступность и на доступные заливает файл с настройками, которые сразу же применяются. Информация о выполнении залитого файла будет записана в address.auto.log

В случае недоступности какого-либо устройства из диапазона попытка залить на него файл завершает работу скрипта неудачей, для этого собственно и нужен пинг.

Теперь о граблях

Старайтесь использовать стандартную структуру настройки для всех устройств. Имена, комментарии через которые можно будет фильтровать доступ к настройкам. Везде где можно используйте списки, даже если там всего один пункт, поверьте это временно и в будущем вы облегчите себе этим жизнь.

Готов к камням (возражениям и замечаниям) в комментариях.

Источник: habr.com/sandbox/123237/

0 комментариев

Оставить комментарий