通过Paramiko在Cisco Switch上执行多个命令 - 提高性能



我正在尝试登录Cisco Switch并在此处做一些事情(例如,配置端口(。我显然不能在思科设备上使用exec_command(cmd1 n cmd2 n) ...所以我正在使用频道来发送我的命令:

channel = ssh.invoke_shell()
channel.send("show arpn")
while not channel.recv_ready():
    time.sleep(0.5)
out = channel.recv(9999)

我不喜欢time.sleep(0.5),希望某些东西动态地等待命令被执行,因为有时命令花费的时间甚至超过0.5秒,这会减慢所有内容。用exec_command(cmd)我有exit_status = channel.recv_exit_status()

是否有这样的方法?

编辑:

我可以以某种方式收听频道并等待输出像

CISCOSWITCH#

我知道我准备发送更多命令或exit

通常,您应该为此使用" exec"通道。" shell"通道不应用于自动执行命令。

,但我知道您的服务器不支持" EXEC"频道的多个命令。我已经为其他读者添加了上述评论,而不是尝试使用此解决方案,除非他们确实必须使用。


如果您必须使用" shell"频道,则必须使用外壳技术。

因此,在您的特殊情况下,您可能需要在命令完成后打印一些唯一的字符串:

channel.send("show arpnecho Command-has-finishedn")

然后,您继续阅读输出,直到找到一条"Command-has-finished"

从JSCH Exec.java示例检查读取代码。

最新更新