PHP Conference Kansai 2025

SNMP::set

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

SNMP::setDefine el valor de un objeto SNMP

Descripción

public SNMP::set(array|string $objectId, array|string $type, array|string $value): bool

Solicita al agente remoto SNMP que defina el valor de uno o varios objetos SNMP especificados por su identificador objectId.

Parámetros

Si objectId es un string, entonces los parámetros type y value deben ser también un string. Si objectId es un array, el parámetro value debe ser un array de igual tamaño que contenga los valores correspondientes, y el parámetro type podrá ser un string (su valor será utilizado para todas las parejas objectId-value) o bien un array de igual tamaño con pares OID-valor. Cuando se proporciona otra combinación de parámetros, pueden emitirse alertas de nivel E_WARNING con una descripción detallada.

objectId

El identificador del objeto SNMP.

Cuando el número de OIDs en el array object_id es superior a la propiedad max_oids del objeto, el método deberá utilizar varias solicitudes para realizar las actualizaciones solicitadas. En este caso, la verificación del tipo y del valor se realiza por partes, por lo que la segunda solicitud (y otras sub-solicitudes) fallará debido a un tipo o valor incorrecto para el OID solicitado. Para detectar este comportamiento, se emite una alerta cuando el número de OIDs en el array object_id es superior a la propiedad max_oids.

type

MIB define el tipo de cada identificador de objeto. Debe indicarse con un único carácter de la siguiente lista.

tipos
=Tipo adquirido a partir de MIB
iINTEGER
uINTEGER
sSTRING
xHEX STRING
dDECIMAL STRING
nNULLOBJ
oOBJID
tTIMETICKS
aIPADDRESS
bBITS

Si se definió OPAQUE_SPECIAL_TYPES al compilar la biblioteca SNMP, los siguientes valores serán también válidos:

tipos
Uint64 sin signo
Iint64 con signo
Ffloat
Ddouble

La mayoría, utilizarán su correspondiente tipo ASN.1. 's', 'x', 'd' y 'b' son diferentes formas de especificar un valor de OCTET STRING, y el tipo sin signo 'u' se usa también para manejar valores Gauge32.

Si se cargan los ficheros MIB en el árbol MIB con "snmp_read_mib" o con la configuración de libsnmp, se puede usar '=' como parámetro type para todos los id de objetos, ya que se podrá leer automáticamente el tipo a partir del MIB.

Tenga presente que hay dos formas de asigar a una variable los tipos BITS, como por ejemplo. "SYNTAX BITS {telnet(0), ftp(1), http(2), icmp(3), snmp(4), ssh(5), https(6)}":

  • Usando el tipo "b" y una lista numérica de bits. No se recomienda usar este método, ya que una consulta GET para un mismo OID devolvería, por ejemplo 0xF8.
  • Usando el tipo "x" y un número hexadecimal, pero si el prefijo "0x".

Revise el apartado de ejemplos para más detalles.

value

El nuevo valor.

Valores devueltos

Devuelve true en caso de éxito o false en caso de error.

Errores/Excepciones

Este método no lanza ninguna excepción de manera predeterminada. Para poder lanzar una excepción SNMPException cuando ocurre alguno de los errores de la biblioteca el parámetro exceptions_enabled de la clase SNMP se debería establecer al valor correspondiente. Véase la explicación de SNMP::$exceptions_enabled para más detalles.

Ejemplos

Ejemplo #1 Define un solo identificador de objeto SNMP

<?php
$session
= new SNMP(SNMP_VERSION_2C, "127.0.0.1", "private");
$session->set('SNMPv2-MIB::sysContact.0', 's', "Nobody");
?>

Ejemplo #2 Define varios valores utilizando una sola llamada al método SNMP::set() call

<?php
$session
= new SNMP(SNMP_VERSION_2C, "127.0.0.1", "private");
$session->set(array('SNMPv2-MIB::sysContact.0', 'SNMPv2-MIB::sysLocation.0'), array('s', 's'), array("Nobody", "Nowhere"));
// o
$session->set(array('SNMPv2-MIB::sysContact.0', 'SNMPv2-MIB::sysLocation.0'), 's', array("Nobody", "Nowhere"));
?>

Ejemplo #3 Ejemplo con SNMP::set() para configurar el identificador de objeto SNMP BITS

<?php
$session
= new SNMP(SNMP_VERSION_2C, "127.0.0.1", "private");
$session->set('FOO-MIB::bar.42', 'b', '0 1 2 3 4');
// o
$session->set('FOO-MIB::bar.42', 'x', 'F0');
?>

Ver también

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top