首页 > 解决方案 > 将 show 命令的输出保存到网络设备时出现问题

问题描述

我正在通过 txt 文件(显示 1、显示 2、显示 3)向路由器发送命令。我的代码按预期将输出打印到控制台,但是当我尝试将其保存到另一个 txt 文件时,它只会保存“show 3”命令的输出

=====================代码:================

from netmiko import Netmiko
from getpass import getpass


cisco1 =  {
    "host" :"192.168.100.1",
    "username" : "XXXXX",
    "password": "XXXXX",
    "device_type" : "cisco_ios",
}

net_connect = Netmiko(**cisco1)

print(net_connect.find_prompt())


with open("conf.txt", "r") as f:
    for lines in f:
        lines = f.readline()
        output = net_connect.send_command(lines)

        with open("cmdoutput.txt", "w") as nf:
            nf.write(output)
        print(output)


net_connect.disconnect()

标签: pythonfile-io

解决方案


  1. 迭代文件产量线。通过显式调用readline(),代码将跳过每隔一行。

    for lines in f:
        lines = f.readline()  # <----
        output = net_connect.send_command(lines)
    

    删除readline()呼叫。

  2. 该代码是循环内的打开输出文件。它将覆盖现有文件。您应该打开一次输出文件。


...
with open("conf.txt", "r") as f, open("cmdoutput.txt", "w") as nf:
    for line in f:
        output = net_connect.send_command(line)
        nf.write(output)
        ...

顺便说一句,lines应该是line


推荐阅读