Ich beabsichtige, mehrere Befehle auf Remote-Host mit paramiko, aber die SSH-Sitzung nach dem Ausführen eines Befehls geschlossen.
Der Code unten aufgeführt:Wie zu halten ssh Sitzung nicht mit Paramiko abgelaufen?
from paramiko import SSHClient
import paramiko
ssh = SSHClient()
ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, 22, user, passwd, timeout=3)
stdin, stdout, stderr = ssh.exec_command('uname -a')
So ist es eine Möglichkeit, die SSH-Sitzung vor der Schließung zu stoppen? Oder irgendwelche Alternativen für Paramiko?
aktualisieren:
konnte ich halte exec_command
auf meinem MacBook anruft, wenn auf einen Linux-Server verbunden, aber die SSH-Sitzung automatisch geschlossen, nachdem exec_command
einmal auf einem Linux-Server, wenn ein zu einem Schalter und angehoben verbunden
SSHException: paramiko.ssh_exception.SSHException: SSH session not active
>>> print ssh.get_transport()
>>> <paramiko.Transport at 0xf00216d0L (unconnected)>
>>> print ssh.get_transport().is_active()
>>> False
>>> print ssh.get_transport().is_authenticated()
>>> False
gibt es eine Möglichkeit paramiko sSH-Sitzung aktiv die ganze Zeit zu halten?
Der paramiko Debug-Modus Info zurück, wie folgend:
Anfangsfaden (Client-Modus): 0x2657e10L
Connected (Version 1.99, Client Comware-5,20)
kex algos: [u'diffie-Hellman -group-exchange-sha1 ', u'diffie-hellman-group14-sha1', u'diffie-hellman-group1-sha1 '] Serverschlüssel: [u'ssh-rsa'] Client verschlüsseln: [u'aes128-cbc ', u'3des-cbc', u'des-cbc '] Server verschlüsseln: [u'aes128-cbc', u'3des-cbc ', u'des-cbc'] client mac: [u'hmac-sha1 ',' hmac-sha1-96 ',' hmac-md5 ',' hmac-md5-96 '] server mac: [h'mac-sha1', h'mac-sha1-96 ', h'mac -md5 ', u'hmac-md5-96'] Client-Komprimierung: [u'none '] Server-Komprimierung: [ u'none '] client lang: [u' '] server lang: [u' '] kex folgt? Falsch
Codierer vereinbart: local = aes128-cbc, remote = aes128-cbc
mit kex diffie-hellman-group14 -sha1; Server Schlüsseltyp ssh-rsa; Verschlüsselung: lokal aes128-cbc, remote aes128-cbc; mac: local hmac-sha1, remote hmac-sha1; Komprimierung: lokal keine, remote keine
Zu neuen Tasten wechseln ...
userauth ist OK
Authentifizierung (Passwort) erfolgreich!
[Chan 0] Max Paket in: 32768 Bytes
[chan 1] Max Paket in: 32768 Bytes
[Chan 0] Max Paket aus: 32496 Bytes
secsh Kanal 0 geöffnet.
secsh Kanal 2 geöffnet werden kann:
Mangel Ressource: Ressourcenknappheit
[chan 0] Sesch Kanal 0 Anfrage ok
[chan 0] EOF gesendet (0)
Gibt es mehr zum Skript als das? Sie sollten weiterhin 'exec_command' aufrufen können. – tdelaney
Hallo? Führen Sie mehrere Befehle im Skript aus oder führen Sie mehrere Skripte mit jeweils einem Befehl aus? – tdelaney
Ich konnte 'exec_command' auf meinem Macbook nennen, aber es funktionierte nicht auf einem Linux-Server und rief eine' SSHException: paramiko.ssh_exception.SSHException: SSH-Session nicht aktiv' auf. Die Python-Version auf dem Mac ist 2.7.11 aber aktiviert Linux-Server ist 2.6.6. @tdelaney –