SNMP オブジェクトの値を設定する

# snmp2_set

(PHP >= 5.2.0, PHP 7, PHP 8)

snmp2_set — SNMP オブジェクトの値を設定する

### 説明

function snmp2_set(
string `$hostname`,
string `$community`,
array|string `$object_id`,
array|string `$type`,
array|string `$value`,
int `$timeout` = -1,
int `$retries` = -1
): bool

snmp2_set() は、 `object_id` で指定した SNMP オブジェクトの値を設定します。

### パラメータ

`hostname`
  SNMP エージェント (サーバー) のホスト名。
`community`
  ライトコミュニティ。
`object_id`
  SNMP オブジェクト ID。
`type`
  MIB は、オブジェクトIDごとのタイプを定義します。 これは、以下の一覧から指定される一文字でなければなりません。

  types
  = | MIBから取得するタイプ
  i | INTEGER
  u | INTEGER
  s | STRING
  x | HEX STRING
  d | DECIMAL STRING
  n | NULLOBJ
  o | OBJID
  t | TIMETICKS
  a | IPADDRESS
  b | BITS

  SNMP ライブラリをコンパイルする際、 `OPAQUE_SPECIAL_TYPES` が定義されていた場合、 以下も正しい値になります:

  types
  U | unsigned int64
  I | signed int64
  F | float
  D | double

  これらの大半は、対応する ASN.1 の型を使います。's', 'x', 'd' および 'b' はどれも OCTET STRING を異なる方法で表したものであり、'u' も Gauge32 値を扱うためのものです。 MIB ファイルが "snmp_read_mib" や libsnmp の設定で MIB ツリーに読み込まれている場合は、 `type` に '=' を使うことができます。 これはすべてのオブジェクト ID を表し、型は自動的に MIB から読み込みます。 "SYNTAX BITS {telnet(0), ftp(1), http(2), icmp(3), snmp(4), ssh(5), https(6)}" のような BITS 型の値変数を設定する方法は二通りあることに注意しましょう。
  - 型として "b" を使い、ビット番号の一覧を指定する。この方法はおすすめしません。 同じ OID に対して GET クエリを実行しても 0xF8 などを返すからです。
  - Using type "x" and a hex number but without(!) the usual "0x" prefix. 型として "x" を使い、通常のプレフィックス "0x" をつけずに(!) 16 進数を指定する。
  詳細は、サンプルを参照ください。
`value`
  新しい値。
`timeout`
  最初のタイムアウトまでのマイクロ秒数。
`retries`
  タイムアウト発生時の再試行回数。

### 戻り値

成功した場合に `true` を、失敗した場合に `false` を返します。

SNMP ホストがデータ型を却下すると、"Warning: Error in packet. Reason: (badValue) The value given has the wrong type or length." のような E_WARNING メッセージが表示されます。未知の OID あるいは無効な OID を指定した場合は、おそらく "Could not add variable" のような警告となります。

### 変更履歴

バージョン | 説明
--- | ---
8.5.0 | hostname の長さが 128 バイト以上の場合、port が負の数または 65535 より大きい場合、 または timeout や retries の値が -1 より小さいか大きすぎる場合に、 ValueError をスローするようになりました。

### 例

例1 snmp2_set() の使用法

    <?php
      snmp2_set("localhost", "public", "IF-MIB::ifAlias.3", "s", "foo");
    ?>

例2 BITS SNMP オブジェクト ID を設定した snmp2_set() の使用法

    <?php
      snmp2_set("localhost", "public", 'FOO-MIB::bar.42', 'b', '0 1 2 3 4');
    // あるいは
      snmp2_set("localhost", "public", 'FOO-MIB::bar.42', 'x', 'F0');
    ?>

### 参考

- snmp2_get() - SNMP オブジェクトを取得する

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open