# snmp3_set

(PHP 4, PHP 5, PHP 7)

snmp3_set — Set the value of an SNMP object

### 说明

snmp3_set ( string `$host` , string `$sec_name` , string `$sec_level` , string `$auth_protocol` , string `$auth_passphrase` , string `$priv_protocol` , string `$priv_passphrase` , string `$object_id` , string `$type` , string `$value` [, int `$timeout` = 1000000 [, int `$retries` = 5 ]] ) : bool

snmp3_set() is used to set the value of an SNMP object specified by the `object_id`.

Even if the security level does not use an auth or priv protocol/password valid values have to be specified.

### 参数

`host`

  The hostname of the SNMP agent (server).

`sec_name`

  the security name, usually some kind of username

`sec_level`

  the security level (noAuthNoPriv|authNoPriv|authPriv)

`auth_protocol`

  the authentication protocol (MD5 or SHA)

`auth_passphrase`

  the authentication pass phrase

`priv_protocol`

  the privacy protocol (DES or AES)

`priv_passphrase`

  the privacy pass phrase

`object_id`

  The SNMP object id.

`type`

  MIB 定义了各个对象 id 的类型。必须是下面列出的单个字符之一。

  类型
  = | 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' 都是指定一个八字节字符串值的方式。并且 'u' 无符号类型也可用于处理 Gauge32 值。

  如果 MIB 文件是用 "snmp_read_mib" 或者通过在 libsnmp config 中指定而加载入 MIB 树时， '=' 可以被用作为所有对象的 `type` 参数，因为 type 可以被自动从 MIB 中读取。

  注意有两种方式可以设定 BITS 类型的变量，例如 "SYNTAX BITS {telnet(0), ftp(1), http(2), icmp(3), snmp(4), ssh(5), https(6)}":

  - 使用 "b" 类型以及一个位数的列表。不推荐使用此方法，因为 GET 查询对同一个 OID 将会返回例如 0xF8。
  - 使用 "x" 类型以及一个十六进制数但是不需要通常的 "0x" 前缀。

  更多细节见范例部分。

`value`

  The new value

`timeout`

  The number of microseconds until the first timeout.

`retries`

  The number of times to retry if timeouts occur.

### 返回值

成功时返回 `TRUE`， 或者在失败时返回 `FALSE`。

If the SNMP host rejects the data type, an E_WARNING message like "Warning: Error in packet. Reason: (badValue) The value given has the wrong type or length." is shown. If an unknown or invalid OID is specified the warning probably reads "Could not add variable".

### 范例

Example #1 Using snmp3_set()

    <?php
      snmp3_set('localhost', 'james', 'authPriv', 'SHA', 'secret007', 'AES', 'secret007', 'IF-MIB::ifAlias.3', 's', "foo");
    ?>

Example #2 Using snmp3_set() for setting BITS SNMP object id

    <?php
      snmp3_set('localhost', 'james', 'authPriv', 'SHA', 'secret007', 'AES', 'secret007', 'FOO-MIB::bar.42', 'b', '0 1 2 3 4');
    // or
      snmp3_set('localhost', 'james', 'authPriv', 'SHA', 'secret007', 'AES', 'secret007', 'FOO-MIB::bar.42', 'x', 'F0');
    ?>