Ho intenzione di eseguire diversi comandi sull'host remoto usando paramiko, ma la sessione ssh si è chiusa dopo aver eseguito un comando.
Il codice di seguito elencati:Come mantenere la sessione ssh non scaduta usando paramiko?
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')
Quindi non v'è alcun modo per fermare la sessione ssh da chiudere? O qualche alternativa per paramiko?
Aggiornamento:
ero in grado di mantenere chiamando exec_command
sul mio MacBook quando è collegato a un server Linux, ma la sessione ssh chiusa automaticamente dopo exec_command
una volta su un server Linux quando è collegato a un interruttoree sollevò un
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
esiste un modo per tenere sessione ssh paramiko attiva per tutto il tempo?
Il paramiko di debug informazioni modalità restituito come segue:
partire filo (modalità client): 0x2657e10L
Connected (versione 1.99, client Comware-5,20)
algos Kex: [u'diffie-Hellman -group-exchange-sha1 ', u'diffie-hellman- group14-sha1', u'diffie-hellman-group1-sha1 '] chiave del server: [u'ssh-rsa'] client criptare: [u'aes128-cbc ', u'3des-cbc', u'des-cbc '] server encrypt: [u'aes128-cbc', u'3des-cbc ', u'des-cbc'] client mac: [u'hmac-sha1 ', u'hmac-sha1-96', u'hmac-md5 ', u'hmac-md5-96'] server mac: [u'hmac-sha1 ', u'hmac-sha1-96', u'hmac -md5 ', u'hmac-md5-96'] client compresso: [u'none '] server compr: [ u'none '] client lang: [u' '] server lang: [u' '] kex segue? False
Cifrari concordati: locale = aes128-cbc, remoto = aes128-cbc
utilizzando kex diffie-hellman-group14 -sha1; tipo di chiave del server ssh-rsa; cifrario: locale aes128-cbc, remoto aes128-cbc; mac: local hmac-sha1, remote hmac-sha1; compressione: locale nessuno, remoto nessuno
Passa a nuove chiavi ...
userauth is OK
Autenticazione (password) riuscita!
[Chan 0] Max pacchetto in: 32768 byte
[Chan 1] Max packet in: 32768 byte
[Chan 0] Max packet out: 32496 byte
canale secsh 0 aperto.canale
secsh 2 Apertura fallita:
Resource carenza: carenza di risorse
[Chan 0] canale Sesch 0 richiesta ok
[Chan 0] EOF inviato (0)
C'è di più nella sceneggiatura di questa? Dovresti essere in grado di continuare a chiamare 'exec_command'. – tdelaney
Ciao? Stai eseguendo diversi comandi nello script o eseguendo diversi script con un comando ciascuno? – tdelaney
Sono stato in grado di continuare a chiamare 'exec_command' sul mio Macbook, ma non ha funzionato su un server Linux e generato un' SSHException: paramiko.ssh_exception.SSHException: sessione SSH non attiva 'La versione Python su Mac è 2.7.11 ma su Il server Linux è 2.6.6. @tdelaney –