Python如何获取GetConfig返回的junos_version更新Netbox自定义字段
代码修改方案
你需要调整2处核心逻辑,即可实现需求:
1. 统一GetConfig函数的返回格式
原代码异常场景仅返回单个布尔值,会导致返回值解包报错,将异常分支的返回修改为双值元组,和成功场景保持结构一致:
# 原GetConfig函数的异常处理部分 except Exception as err: printProgress("ERROR",my_hostname,"Encountered exception while backing up config") printProgress("ERROR",my_hostname,str(err)) # 原return False修改为下面的行 return False, None
2. 修改main函数中GetConfig的调用逻辑,接收返回的版本号并写入Netbox自定义字段
原代码直接判断GetConfig返回结果,未接收第二个返回值,修改如下:
# 原if GetConfig(asset,junos_username,junos_password): 替换为下面的代码 backup_success, junos_version = GetConfig(asset,junos_username,junos_password) if backup_success: print ("Config Successfully backed up from device.",nb_device) nb_device.custom_fields['backup_status'] = "OK" timenow = datetime.datetime.now() # 小优化:你原代码的时间格式少了百分号,会显示成固定的d,修正为%Y-%m-%d timestamp = timenow.strftime("%Y-%m-%d %X") nb_device.custom_fields['backup_timestamp'] = timestamp # 新增固件版本写入逻辑,放在save之前 nb_device.custom_fields['firmware_version'] = junos_version nb_device.save() print (junos_version) else: printProgress ("ERROR",nb_device,"Config backup failed! ") nb_device.custom_fields['backup_status'] = "FAILED" nb_device.save()
修改完成后脚本运行时,只要设备备份成功就会自动将采集到的Junos版本写入对应设备的firmware_version自定义字段。
内容的提问来源于stack exchange,提问作者Ian S.
相关产品推荐
相关产品推荐

