snmpwalk

(PHP 4, PHP 5)

snmpwalk — Fetch all the SNMP objects from an agent

Описание

array snmpwalk ( string $hostname , string $community , string $object_id [, int $timeout [, int $retries ]] )

snmpwalk() function is used to read all the values from an SNMP agent specified by the hostname .

Список параметров

hostname

The SNMP agent.

community

The read community.

object_id

If NULL, object_id is taken as the root of the SNMP objects tree and all objects under that tree are returned as an array.

If object_id is specified, all the SNMP objects below that object_id are returned.

timeout

retries

Возвращаемые значения

Returns an array of SNMP object values starting from the object_id as root or FALSE on error.

Примеры

Пример #1 snmpwalk() Example

<?php
$a 
snmpwalk("127.0.0.1""public"""); 

foreach (
$a as $val) {
    echo 
"$val\n";
}

?>

Above function call would return all the SNMP objects from the SNMP agent running on localhost. One can step through the values with a loop

Смотрите также

Коментарии

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>";

?>
2001-06-20 10:41:26
http://php5.kiev.ua/manual/ru/function.snmpwalk.html
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 */
2001-08-01 05:22:21
http://php5.kiev.ua/manual/ru/function.snmpwalk.html
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.
2001-08-17 11:21:05
http://php5.kiev.ua/manual/ru/function.snmpwalk.html
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.
2001-08-29 11:52:21
http://php5.kiev.ua/manual/ru/function.snmpwalk.html
Timeout is in MICRO seconds.
1,000,000 &micros = 1 s
2002-03-26 05:54:30
http://php5.kiev.ua/manual/ru/function.snmpwalk.html
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;
2003-01-29 12:11:47
http://php5.kiev.ua/manual/ru/function.snmpwalk.html
Автор:
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.
2003-03-14 05:18:46
http://php5.kiev.ua/manual/ru/function.snmpwalk.html
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);
?>
2003-09-17 17:29:02
http://php5.kiev.ua/manual/ru/function.snmpwalk.html
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);
?>
2005-03-23 12:54:45
http://php5.kiev.ua/manual/ru/function.snmpwalk.html

    Поддержать сайт на родительском проекте КГБ