![Cisco 2960-X ssh 输出被截断](https://linux22.com/image/706076/Cisco%202960-X%20ssh%20%E8%BE%93%E5%87%BA%E8%A2%AB%E6%88%AA%E6%96%AD.png)
目标(交换机):
运行 IOS 版本 15.2(2)E6 的 Cisco 2960-X
主机(尝试访问交换机的服务器):
FreeBSD 11.0-RELEASE
我想定期保存从交换机学习到的 MAC 地址,以维护客户端设备的“谁在何时何地”数据库。
我知道 SNMP 方法(读取和关联不同的 MIB),但由于一些我不想在此讨论的原因,我无法使用 SNMP。
我的解决方案是在交换机上保存一个公共 ssh 密钥并发出以下命令:
ssh 用户@switch“显示 mac 地址表”> outputfile.txt
通常,该命令有效,并且“sh mac add”的输出将被重定向到输出文件。但是:
大约有 20% 的尝试最终得到一个 8kb(正好是 8kb)的文件作为输出,其余的则以某种方式被截断,就在输出的中间。
有人知道为什么我的文件被截断了吗?
更新 1:
我忘了说 ssh 命令位于 bash 脚本中,该脚本由 cron 每 X 分钟运行一次。确切地说,现在脚本中有 2 个命令用于 2 个不同的交换机,并且异常不仅限于第二个交换机 - 它们有时都会返回 8k 个结果。
更新2:
如果我改变脚本以循环执行 2 个 ssh 命令并直接从我的 shell 调用它,问题似乎就消失了......(最初该脚本是由 cron 调用的)我的结论是它与 cron 有关。
答案1
我遇到了完全相同的问题,大约 64,000 字节后输出被切断 - 但只有通过 cron 运行时才会发生这种情况。经过故障排除后,我找到了以下解决方案
ssh user@switch "show mac address-table"
替换为
ssh user@switch < echo "show mac address-table"
请不要问我为什么这个解决方案有效......