如何通过snmp获取cisco交换机的端口/接口状态

网络工程 思科 snmp
2021-07-14 12:20:52

我正在尝试编写一个简单的程序来远程显示 cisco 设备的前面板(在本例中为 3560 交换机)。所以我需要通过 snmp 读取每个端口的状态并相应地打开我的 GUI 上的 LED。经过一番搜索,我开始使用 OID 为 1.3.6.1.2.1.2.2.1.8 的“ifOperStatus”。

但问题是,一旦电缆插入端口,此 OID 就会返回“1:up”,并且不反映端口可能具有的不同状态,包括:

绿灯闪烁:链接有活动

琥珀色常亮:端口故障

等等,

关于我应该使用哪些 OID 的任何线索或提示?

3个回答

你看过这个 OID 吗?

Specific Object Information 
Object  clsPortLedStatus
OID 1.3.6.1.4.1.9.5.11.1.7.1.1.3
Type    INTEGER
Permission  read-only
Status  current
Values  1 : unknown
2 : on
3 : off
MIB CISCO-RHINO-MIB 
Description "Indicates the status of the LED.
Unknown(1) indicates either the LED status is 
not supported or the status is none of the
defined."

以及相关的:

Specific Object Information 
Object  clsPortLedType
OID 1.3.6.1.4.1.9.5.11.1.7.1.1.2
Type    INTEGER
Permission  read-only
Status  current
Values  1 : ledTx
2 : ledRx
3 : ledLink
4 : led100Mbps
5 : ledRxLoss
6 : ledRxFullOut
7 : ledRxSync
8 : ledFullDuplex
9 : ledOptDetect

不幸的是,支持的图像/平台非常有限:http : //tools.cisco.com/ITDIT/MIBS/AdvancedSearch?MibSel=4682

对于链接活动,我会说是假的。轮询接口统计信息(字节或帧或数据包传入或传出),并让应用程序中的指示灯在任何一个增加时闪烁。
(虽然我认为从技术上讲,某些控制流量可能会或可能不会导致物理 LED 闪烁 - 例如,BPDU 是否单独计入链接活动?我不知道 - 如果您愿意,我可以稍后检查。)

昨晚为您搜索并浏览了 SNMP 对象导航器 ( http://tools.cisco.com/Support/SNMP/do/BrowseOID.do?local=en ),但没有找到合适的(并不是说它不适合)存在),并且任何可能有趣的都被标记为不可访问(“权限不可访问”)。

如果您感觉特别狡猾,并希望获得最大的准确性,您可以在每个关键端口 LED 前设置一个环境光传感器/“光到频率转换器”,并编写代码以将该信息传递给您的应用程序。
但这不是可扩展的,因此伪造它可能更容易。

编辑,第 2 轮!

怎么样 :

“此对象用于指示 LED 的当前颜色。”

Object  c2900PortVisualIndicator
OID 1.3.6.1.4.1.9.9.87.1.4.1.1.24
Type    INTEGER
Permission  read-only
Status  current
Values  1 : notused
2 : black
3 : amber
4 : green
MIB CISCO-C2900-MIB
Description "This object is used to indicate the current color of
a LED. If a LED is flashing, the value of this object will
represent the color of the LED at that instant in time.
The following conventions indicate port status:
Link healthy returns green(4)
Link activity usually green(4), but may return black(2).
Link faulty alternating green(4)/amber(3)
Port disabled returns amber(3)"

“LED 的颜色。”

Object  ceExtEntityLEDColor
OID 1.3.6.1.4.1.9.9.195.1.3.1.2
Type    INTEGER
Permission  read-only
Status  mandatory
Values  1 : off
2 : green
3 : amber
4 : red
MIB CISCO-ENTITY-EXT-MIB-V1SMI
Description The color of the LED.

“描述显示颜色的整数值”

Type    CDisplayColor
Status  current
Values  1 : unknown
2 : white
3 : red
4 : green
5 : yellow
6 : amber
7 : blue
8 : greenAndAmber
MIB CISCO-ENTITY-DISPLAY-MIB
Description "An integer value that describes the color of the display.

'greenAndAmber' - Indicates that the display color toggles between green and amber."

以及
mrStackUnitBasePortVisualIndicatorGreenMap、
mrStackUnitBasePortVisualIndicatorAmberMap、
mrStackUnitExpansionPortVisualIndicatorGreenMap、
mrStackUnitExpansionPortVisualIndicatorAmberMap 和
mrStackUnitActivityVisualIndicator

都在mrStackUnitEntry

对于 ATM:
ciscoAtmIfXmitLed
ciscoAtmIfRecvLed
ciscoAtmIfCdLed

最后,来自“CISCO-WIRELESS-EXP-MIB”的这个金块:
“当 CISCO-LED-MIB.my 可用并支持 LED 组所需的功能时,LED 组将迁移到其中。”

显然提到了一个从未出现过的 MIB。

这是一个较旧的 Cisco 页面,我希望它保持最新状态。拥有许多 Cisco 产品,但并不总是最新和最好的。http://www.cisco.com/public/sw-center/netmgmt/cmtk/mibs.shtml

要记住的一件事是我没有看到提到你可以浏览整个 Cisco mib 世界,但是如果你想要使用的 mib 没有安装在 IOS 中,那么运行的交换机只会转动你的轮子.

例如,您提到了 3560 型号。如果您有 12.2.50 代码序列,这就是受支持的 mib。ftp://ftp.cisco.com/pub/mibs/supportlists/cat3560/cat3560-supportlist.htm

如果您有 15.x 代码序列,那么 mib 将是不同的组合。如果您要深入研究不合拍的 mib,您必须查看每个代码构建的发行说明/数据表。基于标准的和 Cisco 通用的 mib 通常总是在绝大多数代码系列中。

在那里,通过尝试提取特定 OID 的脚本完成此操作,后来才发现 mib 不在交换机中。DHCP 统计数据和环境统计数据确实存在问题。

您还希望 GUI 显示闪烁的灯吗?snmp 查询是根据查询的 OID 的时间快照。如果您想跟上灯的恒定状态,那么您将不停地轮询,这会将 cpu 驱动到 100% 并保持在那里。根据个人使用 snmp 轮询的经验,将 3560 cpu 推入地下并不难。

只是要记住一些事情。

祝你好运。

IF-MIB 和 CISCO-IF-EXTENSION-MIB(和 OLD-CISCO-INTERFACE-MIB)将包含您可以通过 SNMP 获得的所有内容的 99.999%。简而言之,没有 OID 可以为您提供开关的 LED 状态。但是,您可以检索大量 OID 来解决问题。

dashboard.shtml如果您想了解 Cisco 的设备管理器是如何做到的,请从您的其中一台交换机中获取。您不会对此印象深刻。)