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流量分开计算,公式如下:
也就是前后取两次接口的流量值相减,然后乘以8,再除以两次取值的时间间隔(以秒为单位),这样得到的是bits/s
可以再除1024的平方,变为Mbits/s。
但是上边的公式并不完善,为什么呢?因为ifHCInOctets是个64bits的计数器,尽管这个数字已经很大了,但在长期使用以后还是会达到最大值,接着计数器会回环,直接清零。那么问题来了,如果刚好前一次和后一次取值的中间,遇到了计数器清零了呢?后一次减一次的值就会是负数。那么这种问题应该怎么处理呢?
首先进行数值大小比较,如果后者小于前者,则后者=后者+2^32。公式和其那面一样。
注意如果计数器是counter32的话,则后者=后者+2^32。公式和其那面一样。