Ich bin eine Anwendung, wo es SSHs zu Cisco-Geräten zu sammeln Ausgabe von show
Befehle. Ich verwende paramiko Modul in Python, um dies zu tun.Wie wirkt sich SSH Fenster Größe in paramiko
Beim Vergleichen der Befehlsausgabe mit der von plink
, habe ich erfahren, dass die Ausgabe von paramiko abgeschnitten ist. Versucht mit unbuffering und vergrößerte Puffergröße und es hat nicht geholfen. Später, gerade mit window_size
Parameter versucht und es scheint zu funktionieren.
Unten ist mein Code:
import paramiko
sshclient = None
try:
sshclient = paramiko.SSHClient()
sshclient.set_missing_host_key_policy(paramiko.AutoAddPolicy())
sshclient.connect('mydevice', username='admin', password='admin12345')
chan = sshclient.get_transport().open_session(window_size=500000)
chan.settimeout(10800)
chan.exec_command('show tech-support fcip')
value = chan.recv(1024)
while value:
print(value)
value = chan.recv(1024)
finally:
if sshclient:
sshclient.close()
Wie pro paramiko Dokument für Transport, default_window_size=2097152
; 1597152 kleiner als der Standardwert.
Auch die Teilprotokollausgabe mit default_window_size=2097152
ist:
Authentication (password) successful!
[chan 0] Max packet in: 32768 bytes
[chan 0] Max packet out: 32768 bytes
Secsh channel 0 opened.
[chan 0] Sesch channel 0 request ok
EOF in transport thread
Wo wie bei window_size=500000
ist:
Authentication (password) successful!
[chan 0] Max packet in: 32768 bytes
[chan 0] Max packet out: 32768 bytes
Secsh channel 0 opened.
[chan 0] Sesch channel 0 request ok
[chan 0] EOF received (0)
EOF in transport thread
Hier sieht es aus wie, wenn der WINDOW_SIZE Standardwert ist, wird der Kanal geschlossen wird noch vor dem Beendigungssignal vom Server.
Experten, bitte beraten Sie mich über die Folgen von window_size
in SSH reduziert und wie wird es meine Anwendung beeinflussen?