snmp:获取短接口名称而不是long ifDescr(再次)

我正在使用板球来做一些简单的监测(包括networking设备)我的基于Debian的服务器。

接口由名称(例如eth0eth1 ,…)标识,并且cricket通过在IF-MIB::ifDescr查找它们将这些名称映射到正确的OID:

 $ snmpwalk -Os -c public -v 1 wheezy 1.3.6.1.2.1.2.2.1.2 iso.3.6.1.2.1.2.2.1.2.1 = STRING: "lo" iso.3.6.1.2.1.2.2.1.2.2 = STRING: "eth0" iso.3.6.1.2.1.2.2.1.2.3 = STRING: "eth1" 

一切工作都很好,直到今天我的机器升级到Debian / jessie。 现在报告的界面名称是品牌的一个很长的描述:

 $ snmpwalk -Os -c public -v 1 jessie 1.3.6.1.2.1.2.2.1.2 iso.3.6.1.2.1.2.2.1.2.1 = STRING: "lo" iso.3.6.1.2.1.2.2.1.2.2 = STRING: "Intel Corporation 82576 Gigabit Network Connection" iso.3.6.1.2.1.2.2.1.2.3 = STRING: "Intel Corporation 82576 Gigabit Network Connection" 

虽然我觉得这个长名字很烦人,但是它不再是独一无二的:因为有问题的机器有两个完全相同的网卡,所以我只用了两次相同的名字。

有没有办法使snmpd报告接口名称?

似乎使用IF-MIB::ifDescr作为接口名称是错误的。 正如OID的名称所暗示的,这意味着对界面的(详细的)描述,而不是(唯一的)名称。

要使用的正确的OID是IF-MIB::ifName

 $ snmpwalk -Os -c public -v 1 wheezy 1.3.6.1.2.1.31.1.1.1.1 iso.3.6.1.2.1.31.1.1.1.1.1 = STRING: "lo" iso.3.6.1.2.1.31.1.1.1.1.2 = STRING: "eth0" iso.3.6.1.2.1.31.1.1.1.1.3 = STRING: "eth1" $ snmpwalk -Os -c public -v 1 jessie 1.3.6.1.2.1.31.1.1.1.1 iso.3.6.1.2.1.31.1.1.1.1.1 = STRING: "lo" iso.3.6.1.2.1.31.1.1.1.1.2 = STRING: "eth0" iso.3.6.1.2.1.31.1.1.1.1.3 = STRING: "eth1" 

cricket的情况下,这意味着我将界面映射的板球configuration更改为:

 OID ifName 1.3.6.1.2.1.31.1.1.1.1 map interface-name base-oid = ifName match = %interface-name%