Я выпустил скрипт для обновления (или отправки других команд) в список Mikrotik через SSH. Скрипт основан на работе, которую уже сделали Филлип Хатчисон и Кевин Бёрд. https://github.com/rollopack/MikroTik-Mass-Updater/
Вывод группируется по хостам: результаты сгруппированы по каждому хосту как на экране, так и в лог-файле. Цветной вывод (опционально): вывод на экран может быть цветным для лучшей читабельности — выделяются хосты, команды, вывод и ошибки. Цвета можно включить или отключить с помощью параметра командной строки --no-colors. Лог-файл: команды и соответствующий им вывод сохраняются в лог-файле. Многопоточность: используется многопоточность для ускорения выполнения. Улучшена обработка ошибок: скрипт теперь детальнее обрабатывает и сообщает об ошибках.
Сначала мне нравится массовое обновление. Но я не понимаю, как работают пользовательские команды: простая команда срабатывает, а вот команда типа /user add name=xxxxxx password=yyyyyyy group=read не работает. В каком формате её нужно вводить в массив? В документации не хватает примера.
Спасибо за отзыв. Версия 4.4 вышла с улучшенной поддержкой кастомных команд. Массив custom_commands в скрипте поддерживает два типа команд: Простые команды — Просто строка команды: '/interface/print' Команды с параметрами — Кортеж, содержащий команду и словарь параметров: ('/user/add', { 'name': 'newuser', 'password': 'userpass', 'group': 'read' })
Пример массива custom_commands: custom_commands = [ # Простая команда '/system/clock/print',
# Команда с параметрами ('/user/add', { 'name': 'monitor', 'password': 'secret123', 'group': 'read' }),
# Ещё одна простая команда '/user/print' ]
Важно: Параметры должны точно совпадать с названиями, которые ожидает MikroTik API для этой команды.
Спасибо за отличный скрипт! Если бы я знал, что он существует, мне не пришлось бы делать это самому. Однако, на всякий случай, если кому-то нужно решение без зависимости от Python и API, использующее только bash и SSH: https://github.com/damadmai/update_mikrotik