SUR CETTE PAGE
Exemple : Traiter des OID non pris en charge à l’aide d’un script SNMP
Cet exemple de script SNMP montre comment traiter les identificateurs d’objet (OID) qui ne sont pas pris en charge sur les périphériques exécutant Junos OS.
Exigences
Junos OS version 15.1 ou ultérieure lors de l’utilisation de scripts SNMP SLAX.
Junos OS version 16.1R3 ou ultérieure lors de l’utilisation de scripts Python SNMP sur des commutateurs QFX Series ou des routeurs MX Series, PTX Series ou T Series.
Junos OS version 17.1R1 ou ultérieure lors de l’utilisation de scripts Python SNMP sur des commutateurs EX Series.
Junos OS version 17.3R1 ou ultérieure lors de l’utilisation de scripts SNMP Python sur des pare-feu SRX Series.
SNMP est configuré sur l’appareil.
Présentation et script SNMP
Dans cet exemple, deux scripts SNMP équivalents sont présentés en SLAX et Python qui correspondent et traitent plusieurs OID non pris en charge. Le script renvoie la valeur de l’objet demandé en utilisant l’élément <snmp-script-results>
dans le script SLAX et la jcs.emit_snmp_attributes()
fonction dans le script Python équivalent. La syslog()
fonction d’extension est appelée pour consigner l’action SNMP et l’OID demandés dans le fichier journal système. Pour plus d’informations sur la syslog()
fonction, consultez Fonction syslog() (Python, SAX et XSLT).
Syntaxe 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"; } } } }
Syntaxe 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()
Configuration
Procédure
Procédure étape par étape
Pour télécharger et activer le script :
Vous pouvez créer des scripts SNMP en Python, SAX ou XSLT. Vous pouvez utiliser la commande request system scripts convert pour effectuer une conversion entre SLAX et XSLT.
Copiez le script dans un fichier texte, nommez-le sample_snmp.slax ou sample_snmp.py, selon le cas, puis téléchargez-le dans le répertoire / var/db/scripts/snmp de l’appareil.
Note:Les scripts Python non signés doivent appartenir à root ou à un utilisateur de la classe de connexion Junos OS
super-user
, et seul le propriétaire du fichier peut disposer d’une autorisation d’écriture sur le fichier.Activez le script SNMP et configurez l’OID.
En mode configuration, configurez l’instruction avec le nom de fichier et l’extension appropriés pour votre langage de script au niveau de la
[edit system scripts snmp]
hiérarchie, et configurez l’OIDfile filename
qui déclenchera le script.[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 le script est écrit en Python, configurez l’instruction
language python
orlanguage python3
selon vos besoins.[edit system scripts] user@host# set language python3
Si le script est écrit en Python, configurez l’utilisateur sous les droits d’accès duquel le script s’exécute.
[edit system scripts] user@host# set snmp file sample_snmp.py python-script-user username
Note:Si vous ne configurez pas l’instruction, Junos OS exécute par défaut les scripts SNMP Python avec les privilèges d’accès de l’utilisateur
python-script-user
et du groupenobody
.Exécutez la commande pour valider la
commit
configuration.[edit system scripts] user@host# commit
Résultats
À partir du mode configuration, confirmez votre configuration en entrant la show system scripts snmp
commande.
[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 la sortie n’affiche pas la configuration prévue, répétez les instructions de configuration de cet exemple pour la corriger.
Pour vous assurer que les fichiers activés se trouvent sur le périphérique, répertoriez le contenu du répertoire / var/run/scripts/snmp à l’aide de la file list /var/run/scripts/snmp
commande mode opérationnel.
Vérification
Vérification de l’exécution du script
But
Vérifiez que le script SNMP fonctionne comme prévu.
Action
Exécutez la show snmp mib get
commande , show snmp mib get-next
, ou show snmp mib walk
pour générer une requête 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
Le fichier journal système contient les messages suivants après l’exécution du 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