You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Netmiko结合textfsm解析后如何仅保存筛选内容到TXT文件

你当前代码的核心问题是仅在控制台打印了筛选后的notconnect状态接口信息,没有将这部分内容收集存储到变量中,同时backup.write()方法为空未传入待写入内容,所以无法输出筛选结果。

调整步骤

  • 首先在遍历接口解析结果前,声明一个空字符串变量,用来收集需要保存的筛选内容
  • 在判断接口状态为notconnect的逻辑分支中,除了打印内容,同时将对应内容追加到预先声明的空字符串中
  • 修正with open代码块的缩进,将收集好的筛选内容传入backup.write()方法完成写入

修改后完整代码

from netmiko import ConnectHandler
from datetime import datetime

# 此处保留你原来的cisco_device设备连接参数即可
cisco_device = {
    "device_type": "cisco_ios",
    "ip": "你的设备IP",
    "username": "你的用户名",
    "password": "你的密码",
    # 其他参数保持你原有配置不变
}

connection = ConnectHandler(**cisco_device)
prompt = connection.find_prompt()
hostname = prompt[0:-1]
print(hostname)

output = connection.send_command('show interfaces status', use_textfsm=True)

# 新增:声明空字符串存储筛选后的内容
save_content = ""
for interface in output:
    if interface['status'] == 'notconnect':
        interface_config = f"interface {interface['port']} \n shutdown\n"
        print(interface_config)
        # 新增:将筛选内容追加到存储变量
        save_content += interface_config

print(hostname)
print('*' * 85)

now = datetime.now()
year = now.year
month = now.month
day = now.day
hour = now.hour

filename = f'{hostname}_{month}-{day}-{year}_backup.txt'

with open(filename, 'w', encoding='utf-8') as backup:
    # 修正缩进,传入收集好的筛选内容
    backup.write(save_content)
    print(f'Backup of {hostname} completed successfully')
    print('#' * 30)

print('Closing connection')
connection.disconnect()

如果需要额外向文件中写入时间戳、主机名等其他信息,直接在调用write方法前,将对应内容追加到save_content变量即可。

内容的提问来源于stack exchange,提问作者Donny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:39:03