snmp 操作常见问题

来源:互联网 发布:js获取元素高度 编辑:程序博客网 时间:2024/06/06 19:42

修改该目录下的php\php.ini文件,打开php_snmp模块支持:



安装net-snmp


要把 里面有一个 mibs 文件复制到 php安装盘:usr/mibs 这里

如果测试snmp服务是否在本机已经正常运行


在win7进行测试过程中,先在增加删除程序中增加 snmp服务,在看是否开启,里面的安全是否加入了 public 等关键字



http://blog.jiankongbao.com/?p=185


如果在cli下面执行 snmp函数操作 会报很多错误,基本是常量路径没有设置,在我的电脑高级里面设置路径指向 php安装盘:usr/mibs 中重启就好了


名 MIBDIRS
地址 D:\usr\mibs


在net-snmp中的bin中 执行 ,把 mibs复制到这里面

snmpwalk.exe -t 100 -M mibs -v 2c -c public 192.168.0.88:161

如果有信息出来就说明正确了.




php snmp 常见函数说明

http://www.php.net/manual/zh/function.snmpgetnext.php


这是调出的样式 SNMPv2-MIB::sysDescr.0 = STRING: ZTE Ethernet Switch  ZXR10 2818S, Version: V1.1.12.B


snmprealwalk

snmpwalkoid() 和 snmpwalk() 这三个命令都是获取所有的 oid对象信息 ,但后两个要退出历史的舞台了,建议使用第一个

命令 : snmprealwalk("192.168.0.88", "public", "SNMPv2-MIB::sysDescr");  

结果:

Array

(    [SNMPv2-MIB::sysDescr.0] => STRING: ZTE Ethernet Switch  ZXR10 2818S, Version: V1.1.12.B
)

得到的结果是这个  可以看前面的键值 是一个oid名称


如果后面不加参数是获取所有 如果加的话是单个



命令:$nameOfSecondInterface = snmpgetnetxt('localhost', 'public', 'IF-MIB::ifName.1';

安理说这个函数比较好用,但测试没成功,可能是我的PHP版本有点底,意思是直接得到一个text值,不是上面的数组.


命令:$a = snmpget("192.168.0.88", "public", "SNMPv2-MIB::sysDescr.0");


结果:STRING: ZTE Ethernet Switch  ZXR10 2818S, Version: V1.1.12.B

可以看出 snmpget只返回一个字符串,就是值,


命令:$a = snmp2_walk("192.168.0.88", "public", "SNMPv2-MIB::sysDescr");

结果:

Array
(
    [0] => STRING: ZTE Ethernet Switch  ZXR10 2818S, Version: V1.1.12.B
)

可以看出 snmp2_walk 把oid值变为了数据 0 



所有的函数中都有 这几个参数 snmpget(地址,关键字,OID,超时时间,重试次数)  非常方便吧这里 超时时间是非常大的数,1000000 = 一秒

 $time_start = microtime(true);
 $reponse =  snmpget("192.168.0.88", "public", "SNMPv2-MIB::sysDescr.0",1000000,5);
 $time_end = microtime(true);
 $time = $time_end - $time_start;
 echo "Delay in $time secondes\n";


snmp2_real_walk 这个函数感觉和 snmprealwalk 一样,结果是数组,操作不能带.0


$a = snmp2_getnext("192.168.0.88", "public", "SNMPv2-MIB::sysDescr"); 这个和 snmpget 一样

snmp2_get 和上面的也差不多


snmp_set_valueretrieval  设置反回值的类型

<?php
 snmp_set_valueretrieval
(SNMP_VALUE_LIBRARY);
 
$ret snmpget('localhost''public''IF-MIB::ifName.1');
 
// $ret = "STRING: lo"

 
snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
 
$ret snmpget('localhost''public''IF-MIB::ifName.1');
 
// $ret = "lo";

 
snmp_set_valueretrieval(SNMP_VALUE_OBJECT);
 
$ret snmpget('localhost''public''IF-MIB::ifName.1');
 
// stdClass Object
 // (
 //   [type] => 4        <-- SNMP_OCTET_STR, see constants
 //   [value] => lo
 // )

 // PHP 5.4+ examples
 
snmp_set_valueretrieval(SNMP_VALUE_OBJECT SNMP_VALUE_PLAIN);
 
$ret snmpget('localhost''public''IF-MIB::ifName.1');
 
// stdClass Object
 // (
 //   [type] => 4        <-- SNMP_OCTET_STR, see constants
 //   [value] => lo
 // )

 
snmp_set_valueretrieval(SNMP_VALUE_OBJECT SNMP_VALUE_LIBRARY);
 
$ret snmpget('localhost''public''IF-MIB::ifName.1');
 
// stdClass Object
 // (
 //   [type] => 4        <-- SNMP_OCTET_STR, see constants
 //   [value] => STRING: lo
 // )

?>


snmp_set_quick_print() 这个函数windows下不可用,费我很多时间,


snmp_set_oid_output_format 这个函数是设置oid名称的显示样式,是数字还是字母,还是全名

<?php

 snmp_read_mib
("/usr/share/mibs/netsnmp/NET-SNMP-TC");

 
// default or SNMP_OID_OUTPUT_MODULE in PHP >= 5.3.6
 
print_rsnmprealwalk('localhost''public''RFC1213-MIB::sysObjectID') );

 
snmp_set_oid_output_format(SNMP_OID_OUTPUT_NUMERIC);
 
print_rsnmprealwalk('localhost''public''RFC1213-MIB::sysObjectID') );

 
snmp_set_oid_output_format(SNMP_OID_OUTPUT_FULL);
 
print_rsnmprealwalk('localhost''public''RFC1213-MIB::sysObjectID') );
?>

The above would output:

 Array (    [RFC1213-MIB::sysObjectID.0] => OID: NET-SNMP-TC::linux ) Array (    [.1.3.6.1.2.1.1.2.0] => OID: .1.3.6.1.4.1.8072.3.2.10 ) Array (    [.iso.org.dod.internet.mgmt.mib-2.system.sysObjectID.0] => OID: .iso.org.dod.internet.private.enterprises.netSnmp.netSnmpEnumerations.netSnmpAgentOIDs.linux )


新增加 mibs 

要在 .index 文件中增加相关内容

CISCO-TC CISCO-TC.txt

cisco的 在 http://tools.cisco.com/Support/SNMP/do/BrowseMIB.do?local=en&step=2 这下载


snmptranslate -On -IR IB-TRAP-MIB::ibTrapOneModule


然后手动执行 


D:\usr\bin>snmpwalk.exe -M D:\usr\mibs -v 2c -c fawvwnmro 10.228.8.15:161 IB-SMI
-MIB::infoblox > d:\234.txt

所有CDP信息,包括地址,名,接口

D:\usr\bin\mibs>snmpwalk.exe -M D:\usr\mibs -v 2c -c fawvwnmro 10.255.240.1:161
CISCO-CDP-MIB::ciscoCdpMIB

所有VLAN信息,但没有INT VLAN

D:\usr\bin\mibs>snmpwalk.exe -M D:\usr\mibs -v 2c -c fawvwnmro 10.255.240.1:161 CISCO-VLAN-MEMBERSHIP-MIB::ciscoVlanMembershipMIB >d:\vlan.txt

只收集所有INT VLAN

D:\usr\bin\mibs>snmpwalk.exe -M D:\usr\mibs -v 2c -c fawvwnmro 10.255.240.1:161 CISCO-VLAN-IFTABLE-RELATIONSHIP-MIB::ciscoVlanIfTableRelationshipMIB

所有进程

D:\usr\bin\mibs>snmpwalk.exe -M D:\usr\mibs -v 2c -c fawvwnmro 10.255.240.1:161 CISCO-PROCESS-MIB::ciscoProcessMIB >d:\processes.txt

环境查询

D:\usr\bin\mibs>snmpwalk.exe -M D:\usr\mibs -v 2c -c fawvwnmro 10.255.240.1:161 CISCO-ENVMON-MIB::ciscoEnvMonMIB

判断是二层还是三层端口

D:\usr\bin\mibs>snmpwalk.exe -M D:\usr\mibs -v 2c -c fawvwnmro 10.255.240.30:161 CISCO-L2L3-INTERFACE-CONFIG-MIB::ciscoL2L3IfConfigMIB

原创粉丝点击