note 68759 added to function.snmprealwalk
| From: | scot at indievisible dot org | Date: | Wed, 09 Aug 2006 19:10:51 +0000 |
| Subject: | note 68759 added to function.snmprealwalk | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-115736@lists.php.net to get a copy of this message | ||
Some improvements based on testing a lot of OIDs on a lot of devices.
<?php
function snmptable($host, $community, $oid) {
// TODO: get original state and restore at bottom
snmp_set_oid_numeric_print(TRUE);
snmp_set_quick_print(TRUE);
snmp_set_enum_print(TRUE);
$retval = array();
$raw = snmprealwalk($host, $community, $oid);
if (count($raw) == 0) return ($retval); // no data
$prefix_length = 0;
$largest = 0;
foreach ($raw as $key => $value) {
if ($prefix_length == 0) {
// don't just use $oid's length since it may be non-numeric
$prefix_elements = count(explode('.',$oid));
$tmp = '.' . strtok($key, '.');
while ($prefix_elements > 1) {
$tmp .= '.' . strtok('.');
$prefix_elements--;
}
$tmp .= '.';
$prefix_length = strlen($tmp);
}
$key = substr($key, $prefix_length);
$index = explode('.', $key, 2);
isset($retval[$index[1]]) or $retval[$index[1]] = array();
if ($largest < $index[0]) $largest = $index[0];
$retval[$index[1]][$index[0]] = $value;
}
if (count($retval) == 0) return ($retval); // no data
// fill in holes and blanks the agent may "give" you
foreach($retval as $k => $x) {
for ($i = 1; $i <= $largest; $i++) {
if (! isset($retval[$k][$i])) {
$retval[$k][$i] = '';
}
}
ksort($retval[$k]);
}
return($retval);
}
?>
----
Server IP: 64.71.164.2
Probable Submitter: 209.163.178.60
----
X-Spam-Status: No, hits=3.1 required=5.0 tests=DATE_MISSING,FROM_NO_LOWER
autolearn=no version=2.64
----
Manual Page -- http://www.php.net/manual/en/function.snmprealwalk.php
Edit -- https://master.php.net/note/edit/68759
Del: integrated -- https://master.php.net/note/delete/68759/integrated
Del: useless -- https://master.php.net/note/delete/68759/useless
Del: bad code -- https://master.php.net/note/delete/68759/bad+code
Del: spam -- https://master.php.net/note/delete/68759/spam
Del: non-english -- https://master.php.net/note/delete/68759/non-english
Del: in docs -- https://master.php.net/note/delete/68759/in+docs
Del: other reasons-- https://master.php.net/note/delete/68759
Reject -- https://master.php.net/note/reject/68759
Search -- https://master.php.net/manage/user-notes.php