Essayez d'utiliser le script d'opération Python # 1 On-box de Junos

Aperçu

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.

À propos de Junoscript

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.

environnement

Cette fois, j'essaye dans l'environnement suivant.

Réglage

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!

Essayez d'obtenir des informations

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

Essayez de modifier les paramètres

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é.

finalement

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

Essayez d'utiliser le script d'opération Python # 1 On-box de Junos
Essayez d'utiliser le script de validation Python # 2 On-box de Junos
Essayez d'utiliser Tweepy [Python2.7]
Essayez d'utiliser Kubernetes Client -Python-
Essayez d'utiliser le Python On-box de Junos #Bonus 1 Quelque chose comme ChatOps / Commit et publiez sur Slack
Essayez d'utiliser l'API de Pleasant (python / FastAPI)
Essayez d'utiliser LevelDB avec Python (plyvel)
Essayez d'utiliser l'API d'action de Python argparse
Essayez d'utiliser le module Python Cmd
Essayez d'utiliser LeapMotion avec Python
Essayez d'utiliser Amazon DynamoDB à partir de Python
Essayez Python
Essayez d'utiliser l'API Wunderlist en Python
Essayez une formule utilisant Σ avec python
Dialogflow (anciennement: API.AI) Essayez d'utiliser le SDK Python #dialogflow
Essayez d'utiliser Python avec Google Cloud Functions
Essayez d'utiliser Excel en utilisant Python (Xlwings)
Essayez d'utiliser Tkinter
Fichier python de script
Essayez d'utiliser docker-py
squelette de script python
Essayez d'utiliser Cookiecutter
Essayez d'utiliser PDFMiner
Essayez d'utiliser l'API BitFlyer Ligntning en Python
Profilage de script Python
Python: essayez d'utiliser l'interface utilisateur sur Pythonista 3 sur iPad
Commencez à utiliser Python
Essayez d'utiliser des géopandas
Importer un script python
Essayez d'utiliser Selenium
Essayez d'utiliser scipy
Python> essayez: / sauf:
Essayez d'utiliser le framework Web Python Tornado Partie 1
Essayez d'utiliser pandas.DataFrame
Essayez Juniper JUNOS PyEz (bibliothèque python) Note 1 ~ Présentation de PyEz ~
Essayez d'utiliser tensorflow ① Créez un environnement python et introduisez tensorflow
Essayez d'utiliser django-swiftbrowser
Essayez d'utiliser matplotlib
Essayez d'utiliser le framework Web Python Tornado Partie 2
Essayez d'utiliser tf.metrics
Essayez d'utiliser PyODE
Exécutez des scripts Python à partir d'Excel (en utilisant xlwings)
Scraping à l'aide de Python
Essayez d'utiliser l'API ChatWork et l'API Qiita en Python
Essayez d'utiliser l'API DropBox Core avec Python
Essayez de créer un fichier compressé en utilisant Python et zlib
(Python) Essayez de développer une application Web en utilisant Django
Essayez de projeter la conversion d'image en utilisant OpenCV avec Python
Essayez d'extraire des mots à haute fréquence en utilisant NLTK (python)
Essayez de gratter avec Python.
Manipuler Redmine à l'aide de Python Redmine
Séquence de Fibonacci utilisant Python
python essayez ~ sauf ~ autre
Essayez d'utiliser virtualenv (virtualenvwrapper)
Nettoyage des données à l'aide de Python
[Azure] Essayez d'utiliser Azure Functions
Utilisation des packages Python #external
Mémo de script DynamoDB (Python)
Câblage Communication Pi-SPI avec Python