Python SSH脚本可提取Cisco交换机信息以准备进行网络迁移

时间:2018-10-17 18:55:43

标签: python ssh

我有一个Cisco Nexus5548 IP地址和FQDN的列表。您能否帮助Python脚本对每个脚本进行SSH并提取以下内容,以将其导入Excel列格式:

IP名称端口号端口描述端口类型VLAN光纤类型中型 172.x.x.x hqcr1-swx-x E1 / x实际端口描述(访问或中继)300-305,2276,…1g-sr,10g-sr,1g-glct(铜纤维或双芯同轴电缆)

这是我到目前为止所拥有的:

ComboBoxItem

非常感谢您。

1 个答案:

答案 0 :(得分:0)

您是否尝试在exec_command上使用SSHClient?不确定Cisco盒如何打开/关闭多个通道,但是似乎可以帮助将输出与每个命令分开。

我会做类似的事情:

from paramiko import SSHClient, AutoAddPolicy

def process_devices(devices, connect_args, commands):
    with SSHClient() as client:
        client.set_missing_host_key_policy(AutoAddPolicy())

        for device in devices:
            client.connect(device, **connect_args)

            cmdout = []
            for cmd in commands:
                stdin, stdout, stderr = client.exec_command(cmd, timeout=10)
                cmdout.append((stdout.read(), stderr.read()))

            yield (device, cmdout)

这对诸如此类的东西很有用

from getpass import getpass

devices = [
    '127.0.0.1',
]

connect_args = dict(
    username='smason',
    password=getpass("Password: "),
)

commands = [
    "echo hello world",
    "date",
]

for dev, cmdout in process_devices(devices, connect_args, commands):
    print(f"{dev}: {cmdout}")

您当然可以根据需要将process_devices的输出直接放入dict中,这是一个返回适当对的迭代器