Ceci est l'article sur le 11ème jour du Calendrier de l'Avent NetOpsCoding 2016.
Cette fois, je voudrais vous présenter comment utiliser On-box Python installé à partir de Junos 16.1.
Junoscript est un environnement de script qui s'exécute sur le routeur Junos. Selon le moment de l'opération, Op Script (fonctionne à tout moment), Commit Script (fonctionne lorsque les paramètres sont validés) et Event Script (fonctionne en réponse à un événement). Il existe une. Jusqu'à présent, pour utiliser Junoscript, il était nécessaire d'écrire un script légèrement unique en XSLT ou SLAX, mais à partir de Junos 16.1, ceux-ci peuvent être écrits en Python. On-box Python s'appuie sur l'opération simple basée sur PyEZ préexistante et étend les fonctionnalités précédemment possibles avec Junoscript.
Cette fois, c'est une touche, alors j'aimerais écrire un script d'opération et l'essayer.
Pour plus de détails, veuillez consulter Document officiel. Je vais.
Cette fois, j'essaye dans l'environnement suivant.
Le Python intégré n'est pas activé par défaut. Pour l'activer, vous devez entrer les paramètres suivants.
set system scripts language python
Cela vous permet de spécifier un script écrit en Python dans un script op / event / commit.
De plus, dans Junoscript, pour des raisons de sécurité, le script que vous souhaitez exécuter doit être spécifié dans la configuration, donc même s'il s'agit d'un script op qui peut être exécuté à tout moment, les paramètres suivants sont requis.
set system scripts op file test.py
Le fichier de script spécifié ici doit être enregistré dans `` `` / var / db / scripts / op / `` ``.
Hello, world!
Maintenant que les préparatifs sont terminés, j'aimerais écrire immédiatement un script approprié.
Tout d'abord, c'est un classique, donc ça ne veut rien dire, mais écrivons Hello world et bougeons-le.
#### **`/var/db/scripts/op/Tester.Placez le script suivant avec le nom py.`**
```Placez le script suivant avec le nom py.
#### **`test.py`**
```py
def main():
print "Hello, world!"
if __name__ == "__main__":
main()
Comme mentionné ci-dessus, pour exécuter le script, il est nécessaire de définir le nom de fichier du script dans la configuration, spécifiez-le comme dans l'exemple ci-dessus et validez-le.
Si les paramètres et le contenu du script sont corrects, le script doit pouvoir être exécuté sous la forme suivante.
root@vmx1> op test.py
Hello, world!
Maintenant, exécuter Hello world ne veut rien dire, alors essayons quelque chose d'un peu plus pratique. Dans Python On-box, PyEZ (py-junos-eznc) peut être utilisé, alors obtenons les informations appropriées et les affichons.
Par exemple, exécutez le RPC get-interface-information et écrivez du code qui énumère les noms d'interface.
test.py
from jnpr.junos import Device
def main():
dev = Device()
dev.open()
interfaces = dev.rpc.get_interface_information(terse=True)
for ifd in interfaces.getiterator("physical-interface"):
print ifd.find("name").text.strip()
if __name__ == "__main__":
main()
C'est un code très simple. Le résultat est le suivant.
root@vmx1> op test.py
ge-0/0/0
lc-0/0/0
pfe-0/0/0
pfh-0/0/0
ge-0/0/1
ge-0/0/2
ge-0/0/3
ge-0/0/4
ge-0/0/5
ge-0/0/6
ge-0/0/7
ge-0/0/8
ge-0/0/9
cbp0
demux0
dsc
em1
esi
fxp0
gre
ipip
irb
jsrv
lo0
lsi
mtun
pimd
pime
pip0
pp0
rbeb
tap
vtep
Ensuite, essayons de modifier les paramètres. C'est également très facile car il est basé sur PyEZ.
Ici, à titre d'exemple, écrivons un script qui désactive l'interface ge-0 / 0/0.
test.py
from jnpr.junos import Device
from jnpr.junos.utils.config import Config
def main():
dev = Device()
dev.open()
dev.bind(cu=Config)
config = "set interfaces ge-0/0/0 disable"
dev.cu.lock()
dev.cu.load(config, format="set", merge=True)
dev.cu.commit()
dev.cu.unlock()
dev.close()
if __name__ == "__main__":
main()
Le résultat ressemble à ceci:
root@vmx1> show configuration interfaces ge-0/0/0 | display set
set interfaces ge-0/0/0 vlan-tagging
set interfaces ge-0/0/0 unit 1001 vlan-id 1001
set interfaces ge-0/0/0 unit 1001 family inet address 10.0.1.1/24
root@vmx1> op test.py
root@vmx1> show configuration interfaces ge-0/0/0 | display set
set interfaces ge-0/0/0 disable
set interfaces ge-0/0/0 vlan-tagging
set interfaces ge-0/0/0 unit 1001 vlan-id 1001
set interfaces ge-0/0/0 unit 1001 family inet address 10.0.1.1/24
Vous pouvez voir que le paramètre d'invalidation de ge-0 / 0/0 a été entré.
De cette façon, un exemple d'utilisation de Python On-box est que les scripts qui étaient précédemment écrits dans PyEZ sur le serveur peuvent maintenant être exécutés sur l'appareil.
Cependant, comme mentionné ci-dessus, On-box Python peut remplacer le Junoscript existant, de sorte que sa véritable puissance peut être démontrée en l'utilisant comme langage d'écriture de Commit Script et Event Script.
Dans La prochaine fois, je voudrais présenter des exemples de script de validation et de script d'événement.
Recommended Posts