如何将Cisco IOS设备字典移至外部文件实现Python批量配置?
从外部YAML文件读取Cisco设备列表并批量配置
1. 安装PyYAML依赖库
首先需要安装用于解析YAML文件的工具库:
pip install pyyaml
2. 创建设备清单YAML文件
新建devices.yaml文件,将所有设备信息按列表格式写入,每个设备的结构和你原脚本中的字典一致:
- device_type: cisco_ios ip: 192.168.122.71 username: admin password: cisco - device_type: cisco_ios ip: 192.168.122.82 username: admin password: cisco # 后续新增设备直接按上述格式追加即可
3. 修改Python脚本
替换原脚本中硬编码的设备定义,改为从YAML文件读取设备列表:
from netmiko import ConnectHandler import yaml # 读取YAML格式的设备清单 with open('devices.yaml', 'r') as f: all_devices = yaml.safe_load(f) # 读取配置命令文件 with open('snmp_configs.txt') as f: config_lines = f.read().splitlines() print(config_lines) # 遍历所有设备执行配置 for device in all_devices: net_connect = ConnectHandler(**device) output = net_connect.send_config_set(config_lines) print(output) net_connect.disconnect() # 显式断开连接,避免资源占用
关键注意点
- YAML文件对缩进敏感,必须使用空格缩进,禁止使用制表符
- 生产环境中不要明文存储密码,可使用加密工具(如
ansible-vault)对YAML文件加密,脚本中添加对应解密逻辑 - 若不同设备需要执行不同配置,可在YAML的设备条目里新增
config_file字段,脚本中根据该字段读取对应配置文件
内容的提问来源于stack exchange,提问作者ccsmooth
相关产品推荐
相关产品推荐

