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