如何遍历交换机的所有端口并使用 python 和 ssh 将它们一一禁用?

How can I iterate through all the ports of a switch and disable them one by one using python and ssh?

我想知道如何逐个遍历 SAN 交换机的 48 个端口并启用或禁用它们?对于一些背景信息,我编写了 python 脚本来自动测试网络设备。我使用一个名为 paramiko 的库,它使用 SSH 连接到这些设备。

这是我编写的一个简单函数,用户在其中输入他们想要禁用的端口

def disablePort(ssh):
    user_input = input("Enter the port number you want to disable\n")

    channel = ssh.invoke_shell()

    ssh.exec_command("portdisable " + user_input)

    channel.close()

    print("Port " + user_input + " " + "disabled\n")

    print("Waiting 10 seconds as instructed by the test case\n")

    time.sleep(10)

现在,我在这个交换机上有 48 个端口,我想将它们一一禁用。我觉得一个天真的解决方案是创建一个列表,其中所有端口名称都被硬编码并遍历每个端口并将其提供给 ssh.exec_command() 方法,但是是否有更多 elegant/practical 解决方案到这个?我怎样才能做到这一点?感谢您的帮助!

您应该可以先连接 Paramiko,然后 运行 类似(对于 cisco)

show interfaces status

并从 paramiko 读取标准输出以获取所有接口。然后您可以使用它进行迭代,第一列是名称。

获得端口列表后,您可以一个一个地遍历它们并以相同的方式禁用它们。例如

for port in myListOfPorts:
    ssh.exec_command(f"portdisable {port}")

不过,您应该查看 Netmiko,它是用于网络设备的 paramiko 端口。 https://github.com/ktbyers/netmiko

最后,可能只有一个命令可以拆除所有接口,而不是一次拆除一个。