Mémorandum Cisco _ configuration d'entrée avec Python

Configuration d'entrée à partir de l'invite Python sur le périphérique Cisco

Il existe deux types de fermes IOS-XE, «16.XX à 17.XX» et «3.X.X», et seuls «16.XX à 17.XX» peuvent utiliser les fonctions guesthell et python. Il semble que Python devienne un équipement standard pour JUNIPER et CISCO. Il est possible d'implémenter un réseau programmable qui exécute automatiquement des scripts déclenchés par EEM (événement). Junos a un mode shell depuis longtemps, et les privilèges des utilisateurs ont été désactivés dans le sens où il est dangereux que l'opérateur entre par erreur. Le TCL de Cisco a également été intégré dans une solution de contournement pour le dépannage, mais la maintenance est un obstacle majeur du côté de l'exploitation. Je me demande s'il peut être utilisé dans les opérations populaires Python et NW. .. .. Quoi qu'il en soit, ce n'est pas facile et sûr à utiliser, alors je vais d'abord l'essayer.

Connaissance des haricots

Dans Catalyst 3850/3650 avec IOS-XE Les noms de code du micrologiciel «16.XX» sont des noms de montagnes par ordre alphabétique. 16,2 - 16,3 est Denali 16,6 - 16,7 est Everest 16,8 - 16,9 est Fuji 16.10 - 16.12 est Gibraltar

Dans la série Catalyst 9000, c'était 17.XX, et après Fuji, Amsterdam avec l'acronyme A a été publié (quel est le nom de la série suivante ...?) Cisco IOS XE Amsterdam 17.2.x 30/Mar/2020

Préparation

Confirmation de version

16.6.5 Everest est OK

cisco


iso-sw#show version
---snip---
Switch Ports Model              SW Version        SW Image              Mode
------ ----- -----              ----------        ----------            ----
*    1 56    WS-C3850-48T       16.6.5            CAT3K_CAA-UNIVERSALK9 INSTALL
initialisation guesthell et Python

Activer ** iox ** Il semble que ce soit une fonction qui permet le développement d'applications sur des périphériques Cisco à l'aide d'outils open source Linux sur Cisco IOS.

cisco



isp-sw(config)#iox

Activer le ** serveur http IP **

cisco


isp-sw(config)#ip http server
Confirmer les paramètres initiaux

OK s'il est en cours d'exécution

cisco


isp-sw#show iox-service
IOx Infrastructure Summary:
---------------------------
IOx service (CAF)    : Running
IOx service (HA)     : Running
IOx service (IOxman) : Running
Libvirtd             : Running

isp-sw#show app-hosting list
App id                           State
------------------------------------------------------
guestshell                       RUNNING
Passer du mode privilégié au guesthell

Devenir une invite de bash l'utilisateur est guesthell

cisco→shell


isp-sw#guestshell
[guestshell@guestshell ~]$ echo $SHELL
/bin/bash
[guestshell@guestshell ~]$ whoami
guestshell
[guestshell@guestshell ~]$ uname -a
Linux guestshell 3.10.101-rt110 #1 SMP Sat Oct 13 11:07:11 PDT 2018 mips64 GNU/Linux

Passer du mode privilégié à python

cisco→guestshell→python


isp-sw#guestshell run python
Python 2.7.11 (default, May 17 2017, 05:17:57)
[GCC 5.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

Importation du module Cisco Python

Avec ** import cli ** Tout d'abord, importez le module pour utiliser la commande Ce module vous permet d'exécuter des commandes EXEC et des commandes de configuration à partir de python Entrez la commande help (XXXX) pour voir comment utiliser la commande python

Voici un exemple d'affichage d'aide de ** cli.configure **

python


isp-sw#guestshell run python
Python 2.7.11 (default, May 17 2017, 05:17:57)
[GCC 5.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import cli     ###Module d'importation
>>>
>>> help(configure)         ###Comment utiliser configure s'affiche
Help on function configure in module cli:

configure(configuration)
    Apply a configuration (set of Cisco IOS CLI config-mode commands) to the device
    and return a list of results.

    configuration = '''interface gigabitEthernet 0/0
                         no shutdown'''

    # push it through the Cisco IOS CLI.
    try:
        results = cli.configure(configuration)
        print "Success!"
    except CLIConfigurationError as e:
        print "Failed configurations:"
        for failure in e.failed:
            print failure

    Args:
        configuration (str or iterable): Configuration commands, separated by newlines.

    Returns:
        list(ConfigResult): A list of results, one for each line.

    Raises:
        CLISyntaxError: If there is a syntax error in the configuration.
>>>

Définir avec la commande python

Confirmation des commandes ** configure ** et ** configurep **

Définissez IF avec la commande configure et exécutez shut Entrez la même configuration qui est définie dans le mode de configuration de Cisco sous forme de liste ligne par ligne séparée par ",". La commande devient longue horizontalement, mais plusieurs lignes peuvent être définies

python


>>> cli.configure(["interface GigabitEthernet1/0/7", "shutdown","interface GigabitEthernet1/0/5", "shutdown"]) 
[ConfigResult(success=True, command='interface GigabitEthernet1/0/7', line=1, output='', notes=None), ConfigResult(success=True, command='shutdown', line=2, output='', notes=None), ConfigResult(success=True, command='interface GigabitEthernet1/0/5', line=3, output='', notes=None), ConfigResult(success=True, command='shutdown', line=4, output='', notes=None)]
>>> 
''

Vérifiez les paramètres réels de la machine dans le journal du terminal J'ai pu définir

cisco


isp-sw#ter monitor 
Mar 26 08:42:50.264 JST: %LINK-5-CHANGED: Interface GigabitEthernet1/0/7, changed state to administratively down
Mar 26 08:42:50.270 JST: %LINK-5-CHANGED: Interface GigabitEthernet1/0/5, changed state to administratively down

Ensuite, définissez IF avec la commande configurep et exécutez shut L'opération de réglage n'est la même qu'avec p, et il y a une différence dans la sortie du résultat après l'exécution. Est-il utilisé lors du passage du résultat de l'exécution du script au processus suivant?

python


>>> cli.configurep(["interface GigabitEthernet1/0/7", "shutdown","interface GigabitEthernet1/0/5", "shutdown"]) 
Line 1 SUCCESS: interface GigabitEthernet1/0/7
Line 2 SUCCESS: shutdown
Line 3 SUCCESS: interface GigabitEthernet1/0/5
Line 4 SUCCESS: shutdown
>>> 

Vérifiez les paramètres réels de la machine dans le journal du terminal

cisco


isp-sw#ter monitor 
Mar 26 08:50:18.152 JST: %LINK-5-CHANGED: Interface GigabitEthernet1/0/7, changed state to administratively down
Mar 26 08:50:18.156 JST: %LINK-5-CHANGED: Interface GigabitEthernet1/0/5, changed state to administratively down
Vérifiez les commandes ** execute ** t et ** execute p **

Peut exécuter la commande ** 1 ** Cisco EXEC Ceci est également différent du format du code de sortie après le réglage

python


>>> cli.execute("sh system mtu") 
'Global Ethernet MTU is 1500 bytes.'
>>> 
>>> cli.executep("sh system mtu") 
Global Ethernet MTU is 1500 bytes.
>>> 

Vérifiez les paramètres réels de la machine dans le journal du terminal

cisco


isp-sw#ter monitor 
Mar 26 07:47:09.399 JST: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback11, changed state to up
Mar 26 07:47:09.400 JST: %LINK-3-UPDOWN: Interface Loopback11, changed state to up
May 26 07:47:09.409 JST: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback13, changed state to up
Mar 26 07:47:09.410 JST: %LINK-3-UPDOWN: Interface Loopback13, changed state to up

Vérifiez les commandes ** clip ** et ** cli **

Vous pouvez saisir la configuration Cisco telle quelle à partir du mode EXEC. Il n'y a qu'une différence dans le format du code de sortie après le réglage.

python


>>> cli.clip('show clock')  
21:06:06.846 JST Mon Mar 25 2020
>>> 
>>> cli.cli('show clock')  
'\n21:06:12.672 JST Mon Mar 25 2020\n'
>>>

Vérifiez les paramètres avec la commande ** cli ** J'ai défini deux adresses Lo avec la commande cil. Il sera défini à partir du mode EXEC. N'exécutez pas de fermeture. Alignez simplement la configuration ligne par ligne, séparés par ;.

python


>>> cli.cli('configure terminal; interface loopback 11; ip address 10.11.11.11 255.255.255.255; no shutdown ;interface loopback 13; ip address 10.13.13.13 255.255.255.255; no shutdown ')  
''

Vérifiez les paramètres réels de la machine dans le journal du terminal

cisco


isp-sw#ter monitor 
Mar 26 07:47:09.399 JST: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback11, changed state to up
Mar 26 07:47:09.400 JST: %LINK-3-UPDOWN: Interface Loopback11, changed state to up
May 26 07:47:09.409 JST: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback13, changed state to up
Mar 26 07:47:09.410 JST: %LINK-3-UPDOWN: Interface Loopback13, changed state to up

Résumé

J'ai pu exécuter des commandes de routine et EXEC en utilisant le module Python sur un périphérique Cisco. Ensuite, appliquez-le dans Exécuter le script Python dans EEM

Modèle et version confirmés

Modèle: Catalyst 3850 Ver:Cisco IOS XE 16.06.05 Everest


Lien de référence

Programmability Configuration Guide, Cisco IOS XE Everest 16.6.x

Recommended Posts

Mémorandum Cisco _ configuration d'entrée avec Python
Mémorandum Python
Mémorandum Python 2
Mémorandum Python
mémorandum python
mémorandum python
Mémorandum Python
mémorandum python
Mémorandum Python
Mémorandum de base Python
Mémorandum de Python Pathlib
Mémorandum Python (algorithme)
[Python] Entrée standard
Mémorandum Python [liens]
Variables de numérotation des mémorandums Python
Séquence de touches en Python
mémorandum python (mise à jour séquentielle)
Mémorandum Python (signet personnel)
entrée et sortie python
Mémorandum de base Python partie 2
Entrée / sortie audio Python
Séquence de touches en Python
[Python] À propos de l'entrée standard
Mémorandum @ Python OR Séminaire
mémorandum python super basique
[Python3] Entrée standard [Cheet sheet]
Mémorandum ABC [ABC163 C --managementr] (Python)
fonction de mémorandum python pour débutant
Entrée standard Python3 (compétition pro)
Mémorandum @ Python OR Séminaire: matplotlib
Entrée standard / résumé / python, ruby
Recevoir des conseils d'entrée standard @ python
[Python] Mémorandum sur l'évitement des erreurs SQLAlchemy
Note d'entrée Python dans AtCoder
Mémorandum sur la corrélation [Python]
Mémorandum @ Python OR Séminaire: Pulp
Un mémorandum sur le simulacre de Python
Mémorandum @ Python OU Séminaire: Pandas
[python] Mémorandum de génération aléatoire
Mémorandum @ Python OR Seminar: scikit-learn
[Python] Comment utiliser input ()
mémorandum d'exécution parallèle / asynchrone python
Entrée standard Python3 pour une programmation compétitive
Mémorandum ABC [ABC159 C - Volume maximum] (Python)
Mémorandum d'opération Excel Python pywin32 (win32com)
Représentation matricielle avec entrée standard Python