PHP snmpwalk

snmpwalk

(PHP 4, PHP 5, PHP 7)

snmpwalk — 从代理返回所有的 SNMP 对象

说明

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

返回由 object_id 作为根的 SNMP 对象值所组成的数组,错误则返回 FALSE

snmpwalk() 函数是用来读取所有由 hostname 指定的 SNMP 代理的值。Community 指定该代理中具有读权限的域。一个为 NULL 的 object_id 将被看作 SNMP 对象树的根,而在此树下的所有对象将作为一个数组被返回。如果指定了 object_id,则返回所有在 object_id 下的 SNMP 对象。

$a = snmpwalk("127.0.0.1", "public", ""); 
?>

上边的函数调用将从运行于本机的 SNMP 代理那里返回所有的 SNMP 对象。可使用循环遍历这些值。

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

 

Timeout is in MICRO seconds.
1,000,000 µs = 1 s

 /**
  * Do snmpwalk
  *
  * @param unknown_type $rootOID
  * @return array Array of values
  */
 public function GetTree($rootOID = null)
 {
     try {
         $retval = @snmpwalk($this->Connection, $this->Community, $rootOID, $this->Timeout);
     } catch (Exception $e) {
         $this->RaiseWarning("Cannot walk through {$this->Connection}/{$this->Community}/{$rootOID}" . $e->__toString());
     }
     return $retval;
 }
 
        
        HOME 
            	    
            	    
            	   
            	    	
        
        

"; foreach ($int as $x) { $i = explode(' ', $x); echo ""; } } else { echo "
The device is down. Cannot add
"; } ?>
{$i['1']}

private function _sGetCpuInfo($sIp)
 {
     $cpuinfo = array();
     $ret = snmpwalk($sIp, $this->_aConf['community'], 'hrDeviceEntry', 300000);
     if (is_array($ret)) {
         $len = 0;
         foreach ($ret as $k => $v) {
             list($t, $s) = explode(':', $v);
             if ('INTEGER' !== $t) {
                 $len = $k;
                 break;
             }
         }
         for ($i = 0; $i < $len; $i++) {
             list($t, $s) = explode(':', $ret[$len + $i], 2);
             if (' HOST-RESOURCES-TYPES::hrDeviceProcessor' == $s) {
                 list($t, $s) = explode(':', $ret[2 * $len + $i], 2);
                 $cpuinfo[trim($s)]++;
             }
         }
     }
     $ret = array();
     foreach ($cpuinfo as $k => $v) {
         $ret[] = $v . '个逻辑CPU,' . $k;
     }
     return implode(' || ', $ret);
 }

 

 function my_snmp_walk($ip, $credentials, $oid)
 {
     $timeout = '30000000';
     $retries = '0';
     switch ($credentials->credentials->version) {
         case '1':
             $array = @snmpwalk($ip, $credentials->credentials->community, $oid, $timeout, $retries);
             break;
         case '2':
             $array = @snmp2_walk($ip, $credentials->credentials->community, $oid, $timeout, $retries);
             break;
         case '3':
             $sec_name = $credentials->credentials->security_name ?: '';
             $sec_level = $credentials->credentials->security_level ?: '';
             $auth_protocol = $credentials->credentials->authentication_protocol ?: '';
             $auth_passphrase = $credentials->credentials->authentication_passphrase ?: '';
             $priv_protocol = $credentials->credentials->privacy_protocol ?: '';
             $priv_passphrase = $credentials->credentials->privacy_passphrase ?: '';
             $array = @snmp3_walk($ip, $sec_name, $sec_level, $auth_protocol, $auth_passphrase, $priv_protocol, $priv_passphrase, $oid, $timeout, $retries);
             break;
         default:
             return false;
             break;
     }
     if (!is_array($array)) {
         return false;
     }
     foreach ($array as $i => $value) {
         $array[$i] = trim($array[$i]);
         if ($array[$i] == '""') {
             $array[$i] = '';
         }
         if (strpos($array[$i], '.') === 0) {
             $array[$i] = substr($array[$i], 1);
         }
         // remove the first and last characters if they are "
         if (substr($array[$i], 0, 1) == "\"") {
             $array[$i] = substr($array[$i], 1, strlen($array[$i]));
         }
         if (substr($array[$i], -1, 1) == "\"") {
             $array[$i] = substr($array[$i], 0, strlen($array[$i]) - 1);
         }
         // remove some return strings
         if (strpos(strtolower($array[$i]), '/etc/snmp') !== false or strpos(strtolower($array[$i]), 'no such instance') !== false or strpos(strtolower($array[$i]), 'no such object') !== false or strpos(strtolower($array[$i]), 'not set') !== false or strpos(strtolower($array[$i]), 'unknown value type') !== false) {
             $array[$i] = '';
         }
         // remove any quotation marks
         $array[$i] = str_replace('"', ' ', $array[$i]);
         // replace any line breaks with spaces
         $array[$i] = str_replace(array("\r", "\n"), " ", $array[$i]);
     }
     return $array;
 }

你可能感兴趣的:(PHP snmpwalk)