Skip to content

Releases

2.8 version

Choose a tag to compare

@dsamsonov dsamsonov released this 06 Nov 10:55
a12cde0

2.7 version

Choose a tag to compare

@dsamsonov dsamsonov released this 21 Jul 22:23

v2.7

Новое

  • Защита от случайного разлива на прод — перед выполнением команд megaconf показывает план: список команд из commands/--cmdlist/--cmd и список устройств из --hosts (в одну строку через пробел)
  • --run/-r больше не обязателен для показа плана — без него megaconf читает devices.db и commands, печатает план и завершается (exit 0), не подключаясь к железу («сухой прогон»). Раньше без -r сразу печаталась справка и программа выходила, не читая файлы
  • С -r, без --extreme — после плана запрашивается подтверждение Continue? (y/N); по умолчанию N — любой ответ кроме y/yes завершает программу с кодом 1, ничего не подключая
  • Флаг --extreme / -e — пропускает вопрос подтверждения и сразу выполняет разлив (для автоматизации/CI, где интерактивный ввод недоступен)

v2.6

Исправлено

  • Huawei VRP: не распознавался промпт system/interface view — после system-view ожидание промпта висело до таймаута и устройство помечалось неуспешным, хотя команда на железе выполнилась. promptRE матчил только промпты с >/#/$ на конце (user view <host> работал), но не чисто скобочную форму: [~host] / [*host] (VRP8, вкл. interface view [~host-100GE1/0/1]) и [Huawei] / [Huawei-GigabitEthernet0/0/1] (классический VRP). Добавлена альтернатива для строк вида [...] в конце строки. Пробелы внутри скобок запрещены, поэтому diff-заголовки JunOS ([edit interfaces]) и пейджер ([more 51%]) под неё не попадают; одиночные служебные строки [edit] (JunOS show | compare) и [OK] (Cisco write mem) отсекаются новым фильтром fakeBracketRE в isRealPrompt — без него [OK] ложно «закрывал» бы ожидание промпта и следующая команда уходила бы раньше времени (тот же класс рассинхрона, что чинился в v2.5). Побочный эффект в плюс: в console-режиме (-M) «залипшая» линия с Huawei, оставшаяся в system view, теперь опознаётся как уже залогиненная

2.5

2.5

Choose a tag to compare

@dsamsonov dsamsonov released this 08 Jun 21:13

Release Notes

v2.4

Поддержка консоль-серверов (Moxa и аналоги)

Режим -M позволяет работать через консоль-серверы, где подключение двухстадийное: сначала авторизация на самом консоль-сервере, затем логин на устройстве за ним. Для устройства можно задать отдельные логин и пароль через --login-user / --login-pass. Megaconf сам будит «тихую» serial-линию, которая молчит до первого символа, и немедленно прекращает попытки при неверном логине — важно для портов, где повторный вход блокирует учётку.

Парольная SSH-аутентификация на всех версиях OpenSSH

Раньше автоматический ввод пароля требовал OpenSSH ≥ 8.4. Теперь работает на любой версии, включая OpenSSH 7.4 на RHEL/CentOS 7.

Порт на устройство в devices.db

Можно указать порт прямо в списке устройств: host:port, [ipv6]:port. Удобно когда разные устройства доступны на разных портах — например консоль-серверные порты (moxa:4001, moxa:4002).

Live-вывод

--live транслирует вывод сессии в реальном времени вместо одного блока в конце. Включается автоматически в режиме -M — при работе через консоль-сервер это особенно удобно.

Медленная вставка для serial-линий

-S / --slow отправляет ввод посимвольно с задержкой. Нужно для медленных консоль-серверов (Moxa на 9600 бод), где символы теряются при быстрой отправке.

Исправлено

Длинный вывод на JunOS (show version и т.п.) перестал зависать после первой страницы — пагинатор ---(more NN%)--- теперь распознаётся корректно. При подключении к устройству после обновления прошивки (изменился SSH host key) больше не нужно чистить known_hosts.


v2.5

Исправлен критический баг: команды терялись при push конфигурации

При работе через PTY (с v2.4) каждая команда вызывала два промпта вместо одного. Второй промпт оставался в буфере и немедленно «срабатывал» на следующей команде — megaconf отправлял команды быстрее, чем железо успевало их обрабатывать. Результат рапортовался как success, хотя часть команд просто не доходила. Особенно проявлялось при пуше конфигов с длинными строками — хэши паролей, SSH-ключи.

Пароли в debug-режиме

-d больше не печатает пароли открытым текстом в консоль. Вместо содержимого выводится <protected>. Актуально для всех режимов: SSH, Telnet, -M с двухстадийной аутентификацией.

Права на лог-файлы

Файлы -l, -J, -D теперь создаются закрытыми для других пользователей системы. Важно: вывод сессии нередко содержит секреты — хэши паролей, ключи из show running-config.

Выбор конца строки

--eol позволяет явно задать символ конца строки: lf (дефолт для SSH/Telnet), cr (дефолт для -M), crlf (с предупреждением — на большинстве устройств вызывает проблемы), auto (дефолт, выбирает сам по режиму). Полезно когда конкретное железо ведёт себя нестандартно.

2.2 version

Choose a tag to compare

@dsamsonov dsamsonov released this 28 May 20:21

v2.2
Новое

JSON-лог — флаг -J / --json-log пишет результаты в JSON-файл, ключ = имя устройства, значение {result: success/unsuccess, error (при неуспехе), out}. out (вывод сессии) присутствует всегда, в том числе у неуспешных устройств
Лог по файлу на устройство — флаг -D / --log-dir пишет каждое устройство в отдельный файл <имя>.log в указанном каталоге (каталог создаётся автоматически)

Исправлено

В причину ошибки неуспешного устройства теперь попадает вывод stderr ssh/telnet (Connection refused, Permission denied и т.п.) — раньше диагностика отбрасывалась и в отчёте был только бесполезный timeout
Быстрый отказ при закрытии соединения — если ssh/telnet завершился сразу (refused, отказ авторизации, сразу закрытая сессия), устройство возвращается мгновенно, а не ждёт полный таймаут
Повторная попытка (retry) теперь только на транспортных ошибках; при ошибке аутентификации повтор не делается (бессмысленно и приближает блокировку учётки)
При неуспехе сохраняется частичный вывод сессии (раньше отбрасывался)
Промпт больше не матчится ложно на строках-фрагментах маршрута вида 1.2.3.4> в выводе команд
Ctrl+C корректно завершает работу: дочерние ssh/telnet убиваются, лог-файл закрывается, итоговый отчёт по уже завершённым устройствам печатается (раньше os.Exit пропускал все эти шаги)
Изменившийся ключ хоста после обновления прошивки больше не ломает парольную аутентификацию — добавлен UserKnownHostsFile=/dev/null

Улучшено

SSH-пароль на уровне auth теперь действительно работает через SSH_ASKPASS (бинарь служит сам себе askpass-хелпером); требует OpenSSH ≥ 8.4 на клиенте. Раньше пароль уходил в stdin-пайп и до SSH-аутентификации не доходил
Вывод в параллельном режиме строго сериализован — баннеры подключения больше не вклиниваются в блок другого устройства
В debug-режиме принудительно -j 1, иначе сырой вывод нескольких горутин перемешивается

2.1 version

Choose a tag to compare

@dsamsonov dsamsonov released this 26 May 12:47

Changelog
v2.1
Исправлено

Команды теперь корректно выполняются на всех устройствах — в v1.0 была ошибка из-за которой команды иногда отправлялись дважды и зависали
Пагинация ---(more)--- на JunOS теперь обрабатывается корректно
SSH больше не зависает на устройствах где ключ хоста изменился после обновления прошивки

Новое

Telnet — поддержка через флаг -T / --telnet, по умолчанию SSH
Параллельная работа — флаг -j N для одновременного подключения к N устройствам
Inline команда — -C "sh ver" без файла команд
Прогресс — при запуске сразу видно к каким устройствам идёт подключение и сколько их
Итоговый отчёт — в конце выводится список успешных и неуспешных устройств с причиной ошибки
Буферизованный вывод — при параллельном режиме вывод по каждому устройству печатается целиком, не перемешиваясь
Retry — при ошибке подключения автоматически одна повторная попытка через 5 секунд
Лог в файл — флаг -l ./output.log пишет вывод одновременно в консоль и файл
Комментарии в файлах — строки начинающиеся с # в devices.db и commands игнорируются
Порт — -P меняет порт подключения (дефолт 22 для SSH, 23 для Telnet)
Таймаут — единый флаг -t для таймаута подключения и выполнения команд

Улучшено

Промпт определяется универсально — работает с Cisco, JunOS, Huawei VRP, MikroTik, Eltex, D-Link без настройки
Пагинация обрабатывается автоматически для всех вендоров (---- More ----, ---(more)---, [more 50%], )
ANSI escape-коды убираются из вывода (актуально для MikroTik)
Все настройки из ~/.ssh/config работают автоматически — IdentityFile, ProxyJump, Match и др.
SSH agent forwarding работает через SSH_AUTH_SOCK

1.0 version

Choose a tag to compare

@dsamsonov dsamsonov released this 21 Mar 17:45

some bug fixes

0.0.2

Choose a tag to compare

@dsamsonov dsamsonov released this 15 Mar 23:31
added username and VerboseWriter