Mit meinem ersten paramiko Skript haben wir einen Opengear Console Server, also versuche ich, die Einrichtung von jedem Gerät zu automatisieren, das wir anschließen.Paramiko - ssh Konsolenserver, Rückkehr zum Skript erforderlich, um fortzufahren
Das offene Zahnrad hört auf ssh Verbindungen auf Häfen, zum Beispiel ein Gerät in Port 1 wäre 3001. Ich verbinde mich mit einem Gerät auf Port 8, der funktioniert und mein Skript läuft, aber aus irgendeinem Grund, nachdem ich komme Die Meldung "Interactive SSH session setting" (Interaktive SSH-Sitzung eingerichtet) muss ich auf der Sitzung drücken, um sie auszuführen (also habe ich eine SSH-Sitzung und das Skript funktioniert ebenfalls, es wird geteilt).
Es wartet nur dort, bis ich zurückkomme, ich habe versucht, Renditen zu senden, wie Sie sehen können, aber sie funktionieren nicht, funktioniert nur eine manuelle Rückkehr, die seltsam ist, weil technisch sie das gleiche sind?
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
Protokollierung ist nicht definiert. Muss ich etwas hinzufügen? Ich habe auch bemerkt, dass die erste Carrier Return funktioniert, ich sehe die Konsole und sehe es, dann macht es die Pause, bis ich eine weitere Rückkehr das Skript dann – AlexW
Ich habe die Import-Anweisung hinzugefügt. –
Für den Logger "paramiko.transport" konnten keine Handler gefunden werden – AlexW