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.
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
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
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
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
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
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.
>>>
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.
>>>
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
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
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
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).
Modell: Katalysator 3850 Ver:Cisco IOS XE 16.06.05 Everest
Programmability Configuration Guide, Cisco IOS XE Everest 16.6.x
Recommended Posts