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
相关产品推荐
相关产品推荐

