Usando il mio primo script paramiko, abbiamo un server console opengear, quindi sto tentando di automatizzare l'installazione di qualsiasi dispositivo che inseriamo.Paramiko - ssh al server della console, dovendo premere Invio per continuare lo script
La marcia aperta è in ascolto per le connessioni ssh sulle porte, ad esempio un dispositivo nella porta 1 sarebbe 3001. Mi collego a un dispositivo sulla porta 8, che funziona e il mio script viene eseguito, ma per qualche motivo, dopo aver ottenuto il messaggio "Sessione interattiva SSH stabilita", ho bisogno di colpire il ritorno sulla sessione per farlo funzionare (quindi ho una sessione ssh e lo fa anche lo script, è condivisa).
Aspetta lì fino al mio ritorno, ho provato a inviare i resi come puoi vedere ma non funzionano, funziona solo un ritorno manuale, che è strano perché tecnicamente sono la stessa cosa?
import paramiko
import time
def disable_paging(remote_conn):
'''Disable paging on a Cisco router'''
remote_conn.send("terminal length 0\n")
time.sleep(1)
# Clear the buffer on the screen
output = remote_conn.recv(1000)
return output
if __name__ == '__main__':
# VARIABLES THAT NEED CHANGED
ip = '192.168.1.10'
username = 'root'
password = 'XXXXXX'
port = 3008
# Create instance of SSHClient object
remote_conn_pre = paramiko.SSHClient()
# Automatically add untrusted hosts (make sure okay for security policy in your environment)
remote_conn_pre.set_missing_host_key_policy(
paramiko.AutoAddPolicy())
# initiate SSH connection
remote_conn_pre.connect(ip, username=username, password=password,port=port, look_for_keys=False, allow_agent=False)
print "SSH connection established to %s" % ip
# Use invoke_shell to establish an 'interactive session'
remote_conn = remote_conn_pre.invoke_shell()
print "Interactive SSH session established"
time.sleep(1)
remote_conn.send("\n")
# Strip the initial router prompt
#output = remote_conn.recv(1000)
# See what we have
#print output
# Turn off paging
#disable_paging(remote_conn)
# clear any config sessions
is_global = remote_conn.recv(1024)
if ")#" in is_global:
remote_conn.send("end\n")
time.sleep(2)
# if not in enable mode go to enable mode
is_enable = remote_conn.recv(1024)
if ">" in is_enable:
remote_conn.send("enable\n")
time.sleep(1)
remote_conn.send("conf t\n")
remote_conn.send("int g0/0/1\n")
remote_conn.send("ip address 192.168.1.21 255.255.255.0\n")
remote_conn.send("no shut\n")
remote_conn.send("end\n")
# Wait for the command to complete
time.sleep(2)
remote_conn.send("ping 192.168.1.1\n")
time.sleep(1)
output = remote_conn.recv(5000)
print output
la registrazione non è definita. devo aggiungere qualcosa? Ho anche capito che il primo ritorno di carrige funziona, guardo la console e la vedo, poi fa la pausa fino a quando non prendo un altro ritorno lo script viene quindi eseguito – AlexW
ho aggiunto la dichiarazione di importazione. –
Non è stato possibile trovare gestori per il registratore "paramiko.transport" – AlexW