Цель (переключатель):
Cisco 2960-X под управлением IOS версии 15.2 (2) E6
Хост (сервер пытается связаться с коммутатором):
ВЫПУСК FreeBSD 11.0
Я хочу периодически сохранять изученные MAC-адреса коммутатора, чтобы поддерживать базу данных «кто был, где и когда» клиентских устройств.
Я знаю подход SNMP (где разные MIB считываются и коррелируются), но по причинам, которые я не хотел бы здесь обсуждать, я не могу использовать SNMP.
Мое решение - сохранить ключ public-ssh на коммутаторе и выполнить следующую команду:
ssh user @ switch "показать таблицу MAC-адресов"> outputfile.txt
Обычно команда работает, и вывод «sh mac add» перенаправляется в выходной файл. НО:
Около 20% попыток я получаю файл размером 8 Кбайт (ровно 8 Кбайт) в качестве вывода, остальное как-то усекается, прямо в середине вывода.
Кто-нибудь знает, почему мои файлы обрезаются?
ОБНОВЛЕНИЕ1:
Я забыл упомянуть, что команда ssh находится в сценарии bash, который запускается cron каждые X минут. Если быть точным, в скрипте теперь есть 2 команды для 2 разных переключателей, и аномалия не ограничивается вторым переключателем - оба они иногда возвращают 8k результатов.
ОБНОВЛЕНИЕ2:
Если я изменю сценарий для выполнения 2 команд ssh в цикле и вызову его прямо из моей оболочки, проблема, похоже, исчезнет ... (Первоначально сценарий был вызван cron) Я пришел к выводу, что это как-то связано с cron.
У меня была точно такая же проблема, примерно после 64000 байт вывод был вырезан - но только при запуске через cron. После устранения неполадок я нашел следующее решение
ssh user@switch "show mac address-table"
заменить на
ssh user@switch < echo "show mac address-table"
Пожалуйста, не спрашивайте меня, почему решение работает ....