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