我该如何遍历交换机的所有端口,并使用python和ssh逐个禁用它们?

时间:2019-06-12 14:53:04

标签: python ssh paramiko san

我想知道如何才能一一遍历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()方法,但是对此有没有更优雅/更实用的解决方案?我将如何去做呢?感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

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

show interfaces status

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

一旦有了端口列表,就可以逐个循环并以相同的方式禁用它们。例如

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

尽管,您应该检查一下Netmiko,它是用于网络设备的paramiko端口。 https://github.com/ktbyers/netmiko

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