如何使用 Paramiko 在 Dell EMC OS10 中运行多个配置命令?

How do I run multiple configuration commands in Dell EMC OS10 with Paramiko?

提问人:user21113865 提问时间:2/17/2023 最后编辑:Martin Prikryluser21113865 更新时间:2/24/2023 访问量:195

问:

我正在尝试运行一系列命令以使用 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 ssh paramiko 交换 VLAN

评论


答:

0赞 Martin Prikryl 2/17/2023 #1

关于向以 开头的模式发送命令,请参阅:
在Python Paramiko的SSH服务器上的辅助shell/命令中执行(子)命令
configureSSHClient.exec_commmand

虽然“设备”根本不支持“exec”通道是很常见的:
在设备上使用 Paramiko exec_command 执行命令不起作用


关于您的问题,服务器很可能需要一些时间来为下一个命令做好准备。invoke_shell

快速而肮脏的解决方案是在各个呼叫之间“睡眠”。send

更好的解决方案是在发送下一个命令之前等待命令提示符。