Print

设备配置特殊字符导致iMC无法同步设备信息

2017-06-05 发表

客户表示在拓扑中无法正确显示设备的链路连接信息,排查发现该设备手工同步一直提示失败,但是在iMC上测试该设备的SNMP参数是能够测试通过的,网络延迟也很小,并且客户现场四十多台设备,只有两台设备无法正常同步信息:

 

如下,显示最后一次轮询时间是2016329日(了解到大概是客户添加设备的时间)

其他的显示都感觉挺正常的。测试SNMP参数也通过。

 

查看资源管理的debug日志:

2017-01-12 17:40:14.315 [ERROR (3092)] [THREAD(1912)] [CQvDBConnADP::executeSQL] Execute "update tbl_if_info set ifdesc = 'Ten-GigabitEthernet2/5/0/47', iftype = 6, ifspeed = '10000000000', ifphyaddress = '38:97:d6:0c:38:00', ifadminstatus = 1, ifoptstatus = 1, ifmtu = 9216, iflastchange = '75642', ifalias = '抖训?, ifStatus = 4, ifAlarmStatus = 4, ifPhyAttribute = 1, ifduplexstatus = 3 where dev_id = 43 and ifindex = 2278 and ifStatus != 1" failed, errorMsg:Unclosed quotation mark after the character string '抖训?, ifStatus = 4, ifAlarmStatus = 4, ifPhyAttribute = 1, ifduplexstatus = 3 where dev_id = 43 and ifindex = 2278 and ifStatus != 1'.


2017-01-12 17:40:14.315 [ERROR (10)] [THREAD(1912)] [CDevMgr::updateDevIFDataToDB] executeSQL() error, and SQL is: update tbl_if_info set ifdesc = 'Ten-GigabitEthernet2/5/0/47', iftype = 6, ifspeed = '10000000000', ifphyaddress = '38:97:d6:0c:38:00', ifadminstatus = 1, ifoptstatus = 1, ifmtu = 9216, iflastchange = '75642', ifalias = '抖训?, ifStatus = 4, ifAlarmStatus = 4, ifPhyAttribute = 1, ifduplexstatus = 3 where dev_id = 43 and ifindex = 2278 and ifStatus != 1


2017-01-12 17:40:14.316 [ERROR (0)] [THREAD(1912)] CDevMgr::updateDevDataToDB() call storeDevIFDataToDB() error! 
2017-01-12 17:40:14.317 [ERROR (0)] [THREAD(1912)] in updateDevCfgOrStatus, CDevMgr::updateDevDataToDB() return error!!!

 

从日志中显示IMC在同步到设备Ten-GigabitEthernet2/5/0/47 接口时,出现了错误导致同步失败。查看客户该接口下的配置,发现配置了description ,并且配置里面看到description的显示也存在一点异常。怀疑是配置description时加入了特殊字符导致IMC无法识别致使同步失败。

且该配置应该是客户添加管理了设备之后再加入的,如果一开始客户的description配置里面就有特殊字符,会导致在添加设备时就直接报错,提示数据库错误:

 

解决方法:

将接口下的description删除之后IMC能够同步成功。注意在给设备的接口添加描述信息时尽量使用英文,避免使用中文描述导致iMC数据库无法识别特殊字符导致读取设备信息失败。