J'ai relu ce post en profondeur et j'ai fait des recherches sur Exscript, paramiko, Fabric et pxssh et je suis toujours perdu Session ssh persistante sur le routeur Cisco . Je suis nouveau dans le script python.
J'essaie d'écrire un script dans Python qui va SSH dans un périphérique Cisco, exécutez "show version", affichez les résultats dans le bloc-notes, puis terminez le script.
Je peux faire fonctionner cela avec des commandes show qui ne nécessitent pas que l'utilisateur interagisse avec l'appareil. Par exemple:
from Exscript.util.interact import read_login
from Exscript.protocols import SSH2
account = read_login()
conn = SSH2()
conn.connect('192.168.1.11')
conn.login(account)
conn.execute('show ip route')
print conn.response
conn.send('exit\r')
conn.close()
Le script ci-dessus affichera les résultats de "show ip route".
Si j'essaye conn.execute ('show version'), le script arrive à expiration car le périphérique Cisco attend que l'utilisateur appuie sur la barre d'espace pour continuer, appuyez sur Entrée pour afficher la ligne suivante ou sur n'importe quelle touche pour revenir à la ligne de commande.
Comment puis-je exécuter la commande show version, appuyer deux fois sur la barre d'espace pour afficher la sortie entière de la commande show version, puis l'imprimer en python?
Je vous remercie!!!!
Essayez d'exécuter terminal length 0
avant d'exécuter show version
. Par exemple:
from Exscript.util.interact import read_login
from Exscript.protocols import SSH2
account = read_login()
conn = SSH2()
conn.connect('192.168.1.11')
conn.login(account)
conn.execute('terminal length 0')
conn.execute('show version')
print conn.response
conn.send('exit\r')
conn.close()
Depuis la documentation du terminal Cisco: http://www.Cisco.com/en/US/docs/ios/12_1/configfun/command/reference/frd1003.html#wp1019281
Exécuter d'abord
terminal length 0
pour désactiver la pagination.
Je viens de demander la même chose et le code ci-dessous s'exécutera à partir d'une liste et obtiendra les informations que vous demandez.
from __future__ import print_function
from netmiko import ConnectHandler
import sys
import time
import select
import paramiko
import re
fd = open(r'C:\NewdayTest.txt','w') # Where you want the file to save to.
old_stdout = sys.stdout
sys.stdout = fd
platform = 'Cisco_ios'
username = 'username' # edit to reflect
password = 'password' # edit to reflect
ip_add_file = open(r'C:\IPAddressList.txt','r') # a simple list of IP addresses you want to connect to each one on a new line
for Host in ip_add_file:
Host = Host.strip()
device = ConnectHandler(device_type=platform, ip=Host, username=username, password=password)
output = device.send_command('terminal length 0')
output = device.send_command('enable') #Editable to be what ever is needed
print('##############################################################\n')
print('...................Cisco COMMAND SHOW RUN OUTPUT......................\n')
output = device.send_command('sh run')
print(output)
print('##############################################################\n')
print('...................Cisco COMMAND SHOW IP INT BR OUTPUT......................\n')
output = device.send_command('sh ip int br')
print(output)
print('##############################################################\n')
fd.close()