最近在使用Nornir框架对网络设备进行备份时,遇到了一个相对比较棘手的问题,因为Nornir需要hosts.yaml,一个一个写的话几百台设备信息不知道要写到什么时候去,因此写了一个python脚本实现自动从excel文件读取设备IP地址,端口等信息,自动写入yaml文件。
excel文件
脚本内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import xlrd, json, yaml
def main(file_name): table_name = xlrd.open_workbook(file_name) sheet_name = table_name.sheet_by_index(0)
for k in range(1,sheet_name.nrows): data = sheet_name.row_values(k)
dict_json = { data[0]: {"hostname": data[1], "port": int(data[2])} } excel_to_json = json.dumps(dict_json) json_to_yaml = yaml.load(excel_to_json, Loader=yaml.FullLoader) print(json_to_yaml)
with open('host.yaml',encoding='utf-8',mode='a',) as f: yaml.safe_dump(json_to_yaml,f,allow_unicode=True)
if __name__ == '__main__': main(file_name= input("文件路径:"))
|
脚本执行结果
注意事项
- 目前只测试了xlsx和xls格式表格
- xlrd版本为1.2,最新版本不支持xlsx
脚本第二版