我想编写一个脚本,用于登录多个交换机并检查多个端口的状态。我正在运行 RHEL 4,并且有 HP ProCurve 3500yl 交换机。我想运行类似下面的内容:
ssh myhost -l myuser show interface A3
但是当我这样做时,ssh 命令会一直挂起,直到我按下 ctrl-c。手册似乎认为我想通过 Web 界面检查交换机状态,所以我找不到太多有关远程获取状态的指导。有没有办法通过 ssh 做到这一点?有没有其他更好但仍然可以编写脚本的方法?
答案1
检查交换机状态的常用方法是使用 SNMP。我会检查您的交换机是否支持 SNMP(大多数托管交换机应该支持),以及它是否通过 SNMP 公开您想要的信息。
如果你会写 Perl 程序,我建议你看一下SNMP::信息模块使得查询变得简单。
答案2
你正在以正确的方式做事[1]——我建议向 HP 提交一张票据来修复这个错误。
你可以使用以下方法之一来解决:
ssh myuser@myhost show interface A3 < /dev/null
ssh myhost -l myuser $(echo -e 'show interface A3\nexit')
[1] 即在 Cisco 上运行:)
答案3
我不知道 3500yl 的情况,但在 2600 和 2800 上,不支持远程 ssh 命令。使用-v
(verbose) 选项运行 ssh 会出现以下结果:
debug1: Sending command: show interface 26
debug1: Received SSH2_MSG_UNIMPLEMENTED for 8
答案4
使用 Linux expect 命令。HP 横幅将停止运行您的 ssh 命令。我开源ProCurve 指挥官来解决这个问题。请注意,对于任何由于某种显而易见的原因而不允许远程 ssh 命令调用的系统,都可以使用相同的策略。