Skip to content

2.2 version

Choose a tag to compare

@dsamsonov dsamsonov released this 28 May 20:21
· 6 commits to main since this release

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, иначе сырой вывод нескольких горутин перемешивается