Cisco Memorandum _ Eingabekonfiguration mit Python

Geben Sie die Konfiguration über die Python-Eingabeaufforderung auf dem Cisco-Gerät ein

Es gibt zwei Arten von IOS-XE-Farmen: "16.XX bis 17.XX" und "3.X.X". Nur "16.XX bis 17.XX" können Guestshell- und Python-Funktionen verwenden. Es scheint, dass Python sowohl für JUNIPER als auch für CISCO zur Standardausrüstung wird. Es ist möglich, ein programmierbares Netzwerk zu implementieren, das automatisch von EEM (Ereignis) ausgelöste Skripte ausführt. Junos hat lange Zeit einen Shell-Modus und Benutzerrechte wurden in dem Sinne deaktiviert, dass es gefährlich ist, wenn der Bediener versehentlich eingibt. Die TCL von Cisco wurde ebenfalls in eine Problemumgehung zur Fehlerbehebung eingebettet, aber die Wartung ist eine große Hürde auf der Betriebsseite. Ich frage mich, ob es in den beliebten Python- und NW-Operationen verwendet werden kann. .. .. Wie auch immer, es ist nicht einfach und sicher zu bedienen, also werde ich es zuerst versuchen.

Bohnenwissen

In Catalyst 3850/3650 mit IOS-XE Die Codenamen für die Firmware 16.XX sind Gebirgsnamen in alphabetischer Reihenfolge. 16,2 - 16,3 ist Denali 16.6 - 16.7 ist Everest 16,8 - 16,9 ist Fuji 16.10 - 16.12 ist Gibraltar

In der Catalyst 9000-Serie war es 17.XX, und nach Fuji wurde Amsterdam mit dem Akronym A veröffentlicht (welche Namensreihe kommt als nächstes ...?) Cisco IOS XE Amsterdam 17.2.x 30/Mar/2020

Vorbereitung

Versionsbestätigung

16.6.5 Everest ist in Ordnung

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
Guestshell- und Python-Initialisierung

Aktiviere ** iox ** Es scheint eine Funktion zu sein, die die Anwendungsentwicklung auf Cisco-Geräten unter Verwendung von Linux-Open-Source-Tools unter Cisco IOS ermöglicht.

cisco



isp-sw(config)#iox

Aktiviere ** ip http server **

cisco


isp-sw(config)#ip http server
Bestätigen Sie die Grundeinstellungen

OK, wenn es läuft

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
Wechseln Sie vom privilegierten Modus in die Guestshell

Werden Sie eine Bash-Eingabeaufforderung Benutzer ist Gastschale

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

Wechseln Sie vom privilegierten Modus zu 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.
>>>

Import von Cisco Python-Modulen

Mit ** import cli ** Importieren Sie zunächst das Modul, um den Befehl zu verwenden Mit diesem Modul können Sie EXEC-Befehle und Konfigurationsbefehle von Python aus ausführen Geben Sie den Befehl help (XXXX) ein, um zu sehen, wie der Python-Befehl verwendet wird

Unten finden Sie ein Beispiel für die Hilfeanzeige von ** 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     ###Modul importieren
>>>
>>> help(configure)         ###Die Verwendung von configure wird angezeigt
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.
>>>

Mit Python-Befehl einstellen

** configure ** und ** configurep ** Befehlsbestätigung

Setzen Sie IF mit dem Befehl configure und führen Sie shut aus Geben Sie dieselbe Konfiguration ein, die im Konfigurationsmodus von Cisco als zeilenweise durch "," getrennte Liste festgelegt ist. Der Befehl wird horizontal lang, es können jedoch mehrere Zeilen festgelegt werden

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)]
>>> 
''

Überprüfen Sie die tatsächlichen Maschineneinstellungen im Terminalprotokoll Ich konnte einstellen

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

Setzen Sie als nächstes IF mit dem Befehl configurep und führen Sie shut aus Die Einstelloperation ist nur mit p dieselbe, und es gibt einen Unterschied in der Ausgabe des Ergebnisses nach der Ausführung. Wird es verwendet, wenn das Ergebnis der Skriptausführung an den nächsten Prozess übergeben wird?

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

Überprüfen Sie die tatsächlichen Maschineneinstellungen im Terminalprotokoll

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
Überprüfen Sie die Befehle ** execute ** t und ** execute p **

Kann den Befehl ** 1 ** Cisco EXEC ausführen Dies unterscheidet sich auch vom Ausgabecodeformat nach dem Einstellen

python


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

Überprüfen Sie die tatsächlichen Maschineneinstellungen im Terminalprotokoll

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

Überprüfen Sie die Befehle ** clip ** und ** cli **

Sie können die Cisco-Konfiguration im EXEC-Modus eingeben. Nach der Einstellung gibt es nur einen Unterschied im Ausgabecodeformat.

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'
>>>

Überprüfen Sie die Einstellungen mit dem Befehl ** cli ** Ich habe zwei Lo-Adressen mit dem Befehl cil eingestellt. Es wird aus dem EXEC-Modus eingestellt. Führen Sie no shut aus. Richten Sie die Konfiguration einfach zeilenweise aus, getrennt durch;.

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 ')  
''

Überprüfen Sie die tatsächlichen Maschineneinstellungen im Terminalprotokoll

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

Zusammenfassung

Ich konnte Routinebefehle und EXEC-Befehle mit dem Python-Modul auf einem Cisco-Gerät ausführen. Wenden Sie es anschließend in [Python-Skript in EEM ausführen] an (https://qiita.com/drafts/f7081a0c613ebd66491a).

Bestätigtes Modell und Version

Modell: Katalysator 3850 Ver:Cisco IOS XE 16.06.05 Everest


Referenzlink

Programmability Configuration Guide, Cisco IOS XE Everest 16.6.x

Recommended Posts

Cisco Memorandum _ Eingabekonfiguration mit Python
Python-Memorandum
Python-Memorandum 2
Python-Memorandum
Python Memorandum
Python Memorandum
Python-Memorandum
Python Memorandum
Python-Memorandum
Python-Grundmemorandum
Python Pathlib Memorandum
Python-Memorandum (Algorithmus)
[Python] Standardeingabe
Python-Memorandum [Links]
Python-Memorandum-Nummerierungsvariablen
Tastenanschlag in Python
Python Memorandum (sequentielle Aktualisierung)
Python-Memorandum (persönliches Lesezeichen)
Python-Eingabe und Ausgabe
Python Basic Memorandum Teil 2
Python-Audioeingabe / -ausgabe
Tastenanschlag in Python
[Python] Informationen zur Standardeingabe
Memorandum @ Python ODER Seminar
Python Memorandum Super Basic
[Python3] Standardeingabe [Cheet Sheet]
ABC-Memorandum [ABC163 C --managementr] (Python)
Python-Anfänger-Memorandum-Funktion
Python3-Standardeingabe (Competition Pro)
Memorandum @ Python ODER Seminar: matplotlib
Standardeingabe / Zusammenfassung / Python, Ruby
Empfangen von Standardeingabetipps @ python
[Python] Memorandum zur Vermeidung von SQLAlchemy-Fehlern
Python-Eingabehinweis in AtCoder
Memorandum über Korrelation [Python]
Memorandum @ Python ODER Seminar: Pulp
Ein Memorandum über den Python-Mock
Memorandum @ Python ODER Seminar: Pandas
[Python] Memorandum über zufällige Generationen
Memorandum @ Python ODER Seminar: Scikit-Learn
[Python] Verwendung von input ()
Python-Memorandum zur parallelen / asynchronen Ausführung
Python3-Standardeingabe für wettbewerbsfähige Programmierung
ABC-Memorandum [ABC159 C - Maximales Volumen] (Python)
Python pywin32 (win32com) Excel-Memorandum
Matrixdarstellung mit Python-Standardeingabe