SNMP::walk

(PHP 5 >= 5.4.0, PHP 7)

SNMP::walkSNMP オブジェクトのサブツリーを取得する

説明

public SNMP::walk ( string $object_id [, bool $suffix_as_key = FALSE [, int $max_repetitions [, int $non_repeaters ]]] ) : array

SNMP::walk() を使い、 指定した object_id を起点とする SNMP サブツリーを読み込みます。

パラメータ

object_id

取得するサブツリーのルート。

suffix_as_key

デフォルトでは、完全な OID 記法を出力配列のキーとして使います。 TRUE にすると、サブツリーのプレフィックスはキーから取り除き、 object_id のサフィックスだけを残します。

non_repeaters

これは、渡された変数の中で反復処理の対象外とする変数の数を指定します。 デフォルトは、SNMP オブジェクトでの設定を使います。

max_repetitions

これは、繰り返す変数の反復処理の最大数を指定します。 デフォルトは、SNMP オブジェクトでの設定を使います。

返り値

成功した場合は SNMP オブジェクトの ID とその値の連想配列を返します。エラー時には FALSE を返します。 SNMP エラーが発生した場合は、SNMP::getErrno() および SNMP::getError() を使えばエラー番号(SNMP 拡張モジュールで設定したもの。クラス定数を参照) とエラーメッセージをそれぞれ取得できます。

エラー / 例外

このメソッドは、デフォルトでは一切例外をスローしません。ライブラリでエラーが発生したときに SNMPException をスローさせるには SNMP クラスパラメータ exceptions_enabled に値を設定しなければなりません。 詳細は SNMP::$exceptions_enabled の説明を参照ください。

例1 SNMP::walk() の例

<?php
  $session 
= new SNMP(SNMP::VERSION_1"127.0.0.1""public");
  
$fulltree $session->walk(".");
  
print_r($fulltree);
  
$session->close();
?>

上の例の出力は、 たとえば以下のようになります。

Array
(
    [SNMPv2-MIB::sysDescr.0] => STRING: Test server
    [SNMPv2-MIB::sysObjectID.0] => OID: NET-SNMP-MIB::netSnmpAgentOIDs.8
    [DISMAN-EVENT-MIB::sysUpTimeInstance] => Timeticks: (1150681750) 133 days, 4:20:17.50
    [SNMPv2-MIB::sysContact.0] => STRING: Nobody
    [SNMPv2-MIB::sysName.0] => STRING: server.localdomain
    ...
)

例2 suffix_as_key の例

suffix_as_key は、複数の SNMP サブツリーをひとつにまとめるときに使えます。この例では、インターフェイス名とその型を関連付けます。

<?php
  $session 
= new SNMP(SNMP::VERSION_1"127.0.0.1""public");
  
$session->valueretrieval SNMP_VALUE_PLAIN;
  
$ifDescr $session->walk(".1.3.6.1.2.1.2.2.1.2"TRUE);
  
$session->valueretrieval SNMP_VALUE_LIBRARY;
  
$ifType $session->walk(".1.3.6.1.2.1.2.2.1.3"TRUE);
  
print_r($ifDescr);
  
print_r($ifType);
  
$result = array();
  foreach(
$ifDescr as $i => $n) {
    
$result[$n] = $ifType[$i];
  }
  
print_r($result);
?>

上の例の出力は、 たとえば以下のようになります。

Array
(
    [1] => igb0
    [2] => igb1
    [3] => ipfw0
    [4] => lo0
    [5] => lagg0
)
Array
(
    [1] => INTEGER: ieee8023adLag(161)
    [2] => INTEGER: ieee8023adLag(161)
    [3] => INTEGER: ethernetCsmacd(6)
    [4] => INTEGER: softwareLoopback(24)
    [5] => INTEGER: ethernetCsmacd(6)
)
Array
(
    [igb0] => INTEGER: ieee8023adLag(161)
    [igb1] => INTEGER: ieee8023adLag(161)
    [ipfw0] => INTEGER: ethernetCsmacd(6)
    [lo0] => INTEGER: softwareLoopback(24)
    [lagg0] => INTEGER: ethernetCsmacd(6)
)

参考