确保在 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 时,它们可能不再唯一 - 因此表中的一些条目会丢失......