提问人:user21113865 提问时间:2/17/2023 最后编辑:Martin Prikryluser21113865 更新时间:2/24/2023 访问量:195
如何使用 Paramiko 在 Dell EMC OS10 中运行多个配置命令?
How do I run multiple configuration commands in Dell EMC OS10 with Paramiko?
问:
我正在尝试运行一系列命令以使用 Paramiko 在 Dell EMC OS10 服务器上配置 VLAN。但是,我遇到了一个相当令人沮丧的问题。
我想运行以下命令
# configure terminal
(config)# interface vlan 3
(conf-if-vl-3)# description VLAN-TEST
(conf-if-vl-3)# end
但是,我似乎无法弄清楚如何使用 .paramiko.SSHClient()
当我尝试使用它时效果很好,它会运行此命令并退出。但是,我不知道如何使用单个 .sshclient.exec_command("show vlan")
exec_command
如果我运行以访问配置 shell,则命令将完成,并且我相信通道已关闭,因为我的下一个命令不成功,因为交换机不再处于配置模式。sshclient.exec_command("configure")
sshclient.exec_command("interface vlan ...")
如果有一种方法可以建立一个持久的通道,那将是理想的。exec_command
取而代之的是,我采用了如下函数
chan = sshClient.invoke_shell()
chan.send("configure\n")
chan.send("interface vlan 3\n")
chan.send("description VLAN_TEST\n")
chan.send("end\n")
奇怪的是,当我从 Python 终端一次一个命令运行它时,这有效。
但是,当我从 Python 主函数调用此函数时,它失败了。也许当通道超出函数调用的范围时,通道会过早关闭?
请告知是否有更合理的方法
答:
关于向以 开头的模式发送命令,请参阅:
在Python Paramiko的SSH服务器上的辅助shell/命令中执行(子)命令configure
SSHClient.exec_commmand
虽然“设备”根本不支持“exec”通道是很常见的:
在设备上使用 Paramiko exec_command 执行命令不起作用
关于您的问题,服务器很可能需要一些时间来为下一个命令做好准备。invoke_shell
快速而肮脏的解决方案是在各个呼叫之间“睡眠”。send
更好的解决方案是在发送下一个命令之前等待命令提示符。
评论