确保在 Debian 中安装“snmp-mibs-downloader”。
apt-get install snmp-mibs-downloader
您可能还需要编辑您的 /etc/apt/sources.list
deb http://ftp.us.debian.org/debian/ wheezy main contrib non-free
deb-src http://ftp.us.debian.org/debian/ wheezy main contrib non-free
(PHP 4, PHP 5, PHP 7, PHP 8)
snmpwalkoid — 查询网络实体信息的树状结构
$hostname
,$community
,$object_id
,$timeout
= -1,$retries
= -1
snmpwalkoid() 函数用于读取由 hostname
指定的 SNMP 代理中的所有对象 ID 及其相应的值。
snmpwalkoid() 和 snmpwalk() 的存在有历史原因。这两个函数是为了向后兼容而提供的。请改用 snmprealwalk()。
hostname
SNMP 代理。
community
读取社区。
object_id
如果为 null
,则 object_id
被视为 SNMP 对象树的根,并且该树下所有对象都作为数组返回。
如果指定了 object_id
,则返回该 object_id
下的所有 SNMP 对象。
timeout
第一次超时之前的微秒数。
retries
如果发生超时,重试的次数。
返回一个关联数组,其中包含从 object_id
作为根开始的对象 ID 及其相应的值,或者在出错时返回 false
。
示例 #1 snmpwalkoid() 示例
<?php
$a = snmpwalkoid("127.0.0.1", "public", "");
for (reset($a); $i = key($a); next($a)) {
echo "$i: $a[$i]<br />\n";
}
?>
上述函数调用将返回在本地主机上运行的 SNMP 代理中的所有 SNMP 对象。可以使用循环遍历这些值。
确保在 Debian 中安装“snmp-mibs-downloader”。
apt-get install snmp-mibs-downloader
您可能还需要编辑您的 /etc/apt/sources.list
deb http://ftp.us.debian.org/debian/ wheezy main contrib non-free
deb-src http://ftp.us.debian.org/debian/ wheezy main contrib non-free
上面的注释提到 MAC 地址被转换为整数或类似的东西。不知道为什么会发生这种情况,但我用一个包装函数解决了这个问题。
function PadMAC($mac) {
$mac_arr = explode(':',$mac);
foreach($mac_arr as $atom) {
$atom = trim($atom);
$newarr[] = sprintf("%02s",$atom);
}
$newmac = implode(':',$newarr);
return $newmac;
}
也许这可以帮助遇到这个问题的人。我知道我个人非常依赖这些用户贡献的注释。
注意:snmpwalkoid 可能丢失数据 - 例如,“rmon.matrix.matrixSDTable”表使用二进制 MAC 地址作为索引的一部分,这些地址被转换为 ASCII,当它们到达 PHP 时,它们可能不唯一 - 因此表中的一些条目会丢失……