EN ESTA PÁGINA
Ejemplo: Procesar OIDs no compatibles con una secuencia de comandos SNMP
Esta secuencia de comandos SNMP de ejemplo muestra cómo procesar identificadores de objeto (IDO) que no se admiten en dispositivos que ejecutan Junos OS.
Requisitos
Junos OS versión 15.1 o posterior cuando se utilizan scripts SNMP SLAX.
Junos OS versión 16.1R3 o posterior cuando se utilizan scripts SNMP de Python en conmutadores serie QFX o enrutadores serie MX, PTX o serie T.
Junos OS versión 17.1R1 o posterior cuando se utilizan scripts SNMP de Python en conmutadores de la serie EX.
Junos OS versión 17.3R1 o posterior cuando se utilizan scripts SNMP de Python en puertas de enlace de servicios serie SRX.
SNMP está configurado en el dispositivo.
Descripción general y script SNMP
En este ejemplo, se presentan dos scripts SNMP equivalentes en SLAX y Python que coinciden y procesan varios OID no compatibles. La secuencia de comandos devuelve el valor del objeto solicitado mediante el uso del <snmp-script-results>
elemento en la secuencia de comandos SLAX y la jcs.emit_snmp_attributes()
función en la secuencia de comandos de Python equivalente. Se syslog()
llama a la función de extensión para registrar la acción SNMP y la OID solicitadas en el archivo de registro del sistema. Para obtener más información acerca de la syslog()
función, consulte función syslog() (Python, SLAX y XSLT).
Sintaxis SLAX
version 1.0; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; ns dyn = "http://exslt.org/dynamic"; ns snmp extension = "http://exslt.org/functions"; match / { var $snmp-action = snmp-script-input/snmp-action; var $snmp-oid = snmp-script-input/snmp-oid; expr jcs:syslog(8, "snmp-action = ", $snmp-action, " snmp-oid = ", $snmp-oid); if ($snmp-action == 'get') { if($snmp-oid == '.1.3.6.1.4.1.2636.13.61.1.9.1.1.1') { <snmp-script-results> { <snmp-oid> $snmp-oid; <snmp-type> "Integer32"; <snmp-value> "211"; } } else if($snmp-oid == '.1.3.6.1.4.1.2636.13.61.1.9.1.1.2') { <snmp-script-results> { <snmp-oid> $snmp-oid; <snmp-type> "Integer32"; <snmp-value> "429"; } } } else if ($snmp-action == 'get-next') { if($snmp-oid == '.1.3.6.1.4.1.2636.13.61.1.9.1.1') { <snmp-script-results> { <snmp-oid> ".1.3.6.1.4.1.2636.13.61.1.9.1.1.1"; <snmp-type> "Integer32"; <snmp-value> "211"; } } else if ($snmp-oid == '.1.3.6.1.4.1.2636.13.61.1.9.1.1.1') { <snmp-script-results> { <snmp-oid> ".1.3.6.1.4.1.2636.13.61.1.9.1.1.2"; <snmp-type> "Integer32"; <snmp-value> "429"; } } } }
Sintaxis de Python
import jcs def main(): snmp_action = jcs.get_snmp_action() snmp_oid = jcs.get_snmp_oid() jcs.syslog("8", "snmp_action = ", snmp_action, " snmp_oid = ", snmp_oid) if snmp_action == 'get': if snmp_oid == '.1.3.6.1.4.1.2636.13.61.1.9.1.1.1': jcs.emit_snmp_attributes(snmp_oid, "Integer32", "211") elif snmp_oid == '.1.3.6.1.4.1.2636.13.61.1.9.1.1.2': jcs.emit_snmp_attributes(snmp_oid, "Integer32", "429") elif snmp_action == 'get-next': if snmp_oid == '.1.3.6.1.4.1.2636.13.61.1.9.1.1': jcs.emit_snmp_attributes(".1.3.6.1.4.1.2636.13.61.1.9.1.1.1", "Integer32", "211") elif snmp_oid == '.1.3.6.1.4.1.2636.13.61.1.9.1.1.1': jcs.emit_snmp_attributes(".1.3.6.1.4.1.2636.13.61.1.9.1.1.2", "Integer32", "429") if __name__ == '__main__': main()
Configuración
Procedimiento
Procedimiento paso a paso
Para descargar y habilitar la secuencia de comandos:
Puede crear scripts SNMP en Python, SLAX o XSLT. Puede utilizar el comando de conversión de scripts del sistema de solicitud para convertir entre SLAX y XSLT.
Copie la secuencia de comandos en un archivo de texto, asigne al archivo el nombre sample_snmp.slax o sample_snmp.py, según corresponda, y descárguelo en el directorio /var/db/scripts/snmp del dispositivo.
Nota:Las secuencias de comandos de Python sin signo deben ser propiedad de una raíz o de un usuario en la clase de inicio de sesión de Junos OS
super-user
, y solo el propietario del archivo puede tener permiso de escritura para el archivo.Habilite la secuencia de comandos SNMP y configure la OID.
En el modo de configuración, configure la
file filename
instrucción con el nombre de archivo y la extensión adecuados para el lenguaje de secuencias de comandos en el[edit system scripts snmp]
nivel de jerarquía y configure la OID que activará la secuencia de comandos.[edit system scripts] user@host# set snmp file sample_snmp.slax oid .1.3.6.1.4.1.2636.13.61.1.9.1.1
-
Si la secuencia de comandos está escrita en Python, configure la
language python
instrucción olanguage python3
según corresponda.[edit system scripts] user@host# set language python3
Si la secuencia de comandos está escrita en Python, configure al usuario con cuyos privilegios de acceso se ejecuta la secuencia de comandos.
[edit system scripts] user@host# set snmp file sample_snmp.py python-script-user username
Nota:Si no configura la
python-script-user
instrucción, junos OS ejecuta scripts SNMP de Python de forma predeterminada bajo los privilegios de acceso del usuario y del gruponobody
.Ejecute el
commit
comando para confirmar la configuración.[edit system scripts] user@host# commit
Resultados
Desde el modo de configuración, escriba el comando para confirmar la show system scripts snmp
configuración.
[edit] user@host# show system scripts snmp file sample_snmp.slax { oid .1.3.6.1.4.1.2636.13.61.1.9.1.1; }
Si el resultado no muestra la configuración deseada, repita las instrucciones de configuración en este ejemplo para corregirla.
Para asegurarse de que los archivos habilitados estén en el dispositivo, enumere el contenido del directorio /var/run/scripts/snmp mediante el comando del file list /var/run/scripts/snmp
modo operativo.
Verificación
Verificar la ejecución de la secuencia de comandos
Propósito
Compruebe que la secuencia de comandos SNMP funcione según lo esperado.
Acción
Emita el show snmp mib get
comando , show snmp mib get-next
o show snmp mib walk
para generar una solicitud SNMP.
user@host> show snmp mib get .1.3.6.1.4.1.2636.13.61.1.9.1.1.1 juniperMIB.13.61.1.9.1.1.1 = 211
user@host> show snmp mib get .1.3.6.1.4.1.2636.13.61.1.9.1.1.2 juniperMIB.13.61.1.9.1.1.2 = 429
user@host> show snmp mib get-next .1.3.6.1.4.1.2636.13.61.1.9.1.1.1 juniperMIB.13.61.1.9.1.1.2 = 429
user@host> show snmp mib walk .1.3.6.1.4.1.2636.13.61.1.9.1.1 juniperMIB.13.61.1.9.1.1.1 = 211 juniperMIB.13.61.1.9.1.1.2 = 429
El archivo de registro del sistema contiene los siguientes mensajes después de la ejecución del script:
Jul 3 10:07:48 host cscript: snmp-action = get snmp-oid = .1.3.6.1.4.1.2636.13.61.1.9.1.1.1 Jul 3 10:07:51 host cscript: snmp-action = get snmp-oid = .1.3.6.1.4.1.2636.13.61.1.9.1.1.2 Jul 3 10:08:05 host cscript: snmp-action = get-next snmp-oid = .1.3.6.1.4.1.2636.13.61.1.9.1.1.1 Jul 3 10:08:24 host cscript: snmp-action = get-next snmp-oid = .1.3.6.1.4.1.2636.13.61.1.9.1.1 Jul 3 10:08:24 host cscript: snmp-action = get-next snmp-oid = .1.3.6.1.4.1.2636.13.61.1.9.1.1.1 Jul 3 10:08:24 host cscript: snmp-action = get-next snmp-oid = .1.3.6.1.4.1.2636.13.61.1.9.1.1.2