I found on Windows (PHP 5) an empty string did not return anything, it just timed out. I had to use null instead:
<?php
$a = snmpwalk("127.0.0.1", "public", null);
?>
snmpwalk
(PHP 4, PHP 5)
snmpwalk — Busqueda por un arbol de información acerca de un entidad de red
Descripción
Devuelve una matriz de valores de objetos SMNP comenzando por el object_id() como raíz y FALSE en caso de error.
La función snmpwalk() es usada para leer todos los valores de un agente SNMP especificado por el hostname . Community especifica la comunidad lectora para el agente. Un object_id nulo se toma como la raíz del arbol de los objetos SNMP y todos los objetos por debajo de ese arbol son devueltos como una matriz. Si object_id es especificado, todos los objetos SNMP por debajo de object_id son devueltos.
$a = snmpwalk("127.0.0.1", "public", "");
Encima de una función de llamada podrían devolverse todos los objetos SNMP del agente SNMP en ejecución en el servidor local. Uno puede pasar por todos los valores con un bucle.
for ($i=0; $i<count($a); $i++) {
echo $a[$i];
}
snmpwalk
23-Mar-2005 07:54
17-Sep-2003 11:29
I had to use an object_id like these.
'SNMPv2-MIB::system.sysDescr.0'
'IF-MIB::interfaces.ifTable.ifEntry.ifAdminStatus'
<?php
$host = '192.168.1.1';
$community = 'public';
$object_id = 'IF-MIB::interfaces.ifTables.ifEntry.ifAdminStatus';
$sysdesc = snmpwalk($host, $community', $object_id);
print_r($sysdesc);
?>
14-Mar-2003 12:18
Note that there's different behaviuor in php snmpwalk and ucd snmpwalk. If you try to walk an oid that has one value not under a subkey of the walked oid, ucd snmpwalk will return the value while php's snmpwalk will not.
29-Jan-2003 07:11
It would be nice to be able to specify what snmp version to use ( 1,2c,3 )
For now, I'ts hardcoded in ext/snmp/snmp.c
change session.version from 1 to 2c or 3 if you need for now..
i.e
session.version = SNMP_VERSION_1;
to:
session.version = SNMP_VERSION_2c;
29-Aug-2001 05:52
Something to care about in dealing with snmpwalk:<BR>
While walking the MIB, snmpwalk puts info that gets into an array, and that is correct.<BR>
The trouble happened when snmpwalk needs to collect information from instances that contains subinstances (i.e. walking .1.2.3.4.5 and having instances like 1.1, 1.2, 1.3): in this case it gets info and passes into an array, but when walking the array, each value is preceeded by 'Counter32: '.<BR>
I've tested this in many ways and it always happened the same way.
17-Aug-2001 05:21
Ah. That's why all of our SNMP stuff was timing out anytime there was any load on the system. Sigh. A waste of two weeks trying to debug snmp....
Even the snmpcmd manpage doesn't give a
unit for timeout.
01-Aug-2001 11:22
for the poster wondering what the
timeout field was measured in:
from the ucd-snmp header file snmp_api.h:
long timeout;
/* Number of uS until first timeout
then exponential backoff */
20-Jun-2001 04:41
A quick router device view:
<?
include "header.html";
$host = "auscr1";
$community = "tellme";
$sysDescr = snmpget("$host","$community","system.sysDescr.0");
$ifDescr = snmpwalk("$host","$community","interfaces.ifTable.ifEntry.ifDescr");
$ifIndex = snmpwalk("$host","$community","interfaces.ifTable.ifEntry.ifIndex");
$ifAdminStatus = snmpwalk("$host","$community","interfaces.ifTable.ifEntry.ifAdminStatus");
$ifOperStatus = snmpwalk("$host","$community","interfaces.ifTable.ifEntry.ifOperStatus");
$ifLastChange = snmpwalk("$host","$community","interfaces.ifTable.ifEntry.ifLastChange");
print "<table border=1 bgcolor=#ffffff><tr><td>$host</td></tr></table><br>";
print "<table border=1 bgcolor=#ffffff><tr><td>$sysDescr</td></tr></table><br>";
print "<table border=1 bgcolor=#ffffff>";
print "<tr>
<td>ifIndex</td>
<td>ifDescr</td>
<td>ifAdminStatus</td>
<td>ifOperStatus</td>
<td>ifLastChange</td>
</tr>";
for ($i=0; $i<count($ifIndex); $i++) {
print "<tr>";
print "<td>$ifIndex[$i]</td>";
print "<td>$ifDescr[$i]</td>";
print "<td>$ifAdminStatus[$i]</td>";
print "<td>$ifOperStatus[$i]</td>";
print "<td>$ifLastChange[$i]</td>";
print "</tr>";
}
print "</table>";
?>
