华为9306 snmp OID

snmp2_get("118.88.32.243", "xajhrw", "DISMAN-EVENT-MIB::sysUpTimeInstance"); 取得运行时间

 

snmp2_get("118.88.32.243", "xajhrwx", "SNMPv2-MIB::sysDescr.0"); 取得系统信息

 

snmp2_get("118.88.32.243", "xajhrwx", "SNMPv2-MIB::sysName.0"); 取得交换机名称

 

snmp2_get("118.88.32.243", "xajhrwx", "IF-MIB::ifInMulticastPkts.6"); 得取的是组播包 Multicast

 

 snmp2_get("118.88.32.243", "xajhrwx", "IF-MIB::ifLastChange.28"); 取得端口的up时间

 

snmp2_get("118.88.32.243", "xajhrwx", "IF-MIB::ifAdminStatus.28");  物理链路状态  PHY指物理层

 

snmp2_get("118.88.32.243", "xajhrwx", "IF-MIB::ifOperStatus.6"); 协议状态 

 

snmp2_get("118.88.32.243", "xajhrwx", "IF-MIB::ifHCInOctets.28"); 进入端口数据的总量

 

snmp2_get("118.88.32.243", "xajhrwx", "IF-MIB::ifHCOutOctets.6"); 出口的数据总量

 

snmp2_get("118.88.32.243", "xajhrwx", "IF-MIB::ifHighSpeed.6"); 接口的速率 是百兆还是万兆

 

snmp2_get("118.88.32.243", "xajhrwx", "IF-MIB::ifAlias.6"); 接口的描述

 

snmp2_get("118.88.32.243", "xajhrwx", "IF-MIB::ifType.6"); 接口类型 是g口还是e口之类的

 

snmp2_get("118.88.32.243", "xajhrwx", "IP-MIB::ipv4InterfaceEnableStatus.58");  三层vlan的状态

 

snmp2_get("118.88.32.243", "xajhrwx", "SNMPv2-MIB::snmpEnableAuthenTraps.0"); 是否开启 snmp traps 设置,就是自动发送snmp信息的功能

 

snmp2_get("118.88.32.243", "xajhrwx", "IF-MIB::ifInOctets.7"); 当前IN口数据流量

 

snmp2_get("118.88.32.243", "xajhrwx", "IF-MIB::ifOutOctets.6"); 当前OUT 口数据流量

 

 

然后又google到了Cisco的一篇文档,说明了如何通过端口的流量来计算带宽。

具体可以看参考文档,直接说结论,对于全双工网络建议将IN和OUT流量分开计算,公式如下:

华为9306 snmp OID_第1张图片
也就是前后取两次接口的流量值相减,然后乘以8,再除以两次取值的时间间隔(以秒为单位),这样得到的是bits/s

可以再除1024的平方,变为Mbits/s。

 

但是上边的公式并不完善,为什么呢?因为ifHCInOctets是个64bits的计数器,尽管这个数字已经很大了,但在长期使用以后还是会达到最大值,接着计数器会回环,直接清零。那么问题来了,如果刚好前一次和后一次取值的中间,遇到了计数器清零了呢?后一次减一次的值就会是负数。那么这种问题应该怎么处理呢?

首先进行数值大小比较,如果后者小于前者,则后者=后者+2^32。公式和其那面一样。

注意如果计数器是counter32的话,则后者=后者+2^32。公式和其那面一样。

你可能感兴趣的:(Python,SNMP)