2017-04-02 4 views
1

Fondamentalement, j'ai un problème avec l'exécution d'un scp sur une session ssh SSH imbriquée en Python. J'ai utilisé paramiko pour établir un SSH de ma machine locale à un autre serveur, appelons cela A et de A. Je veux scp un fichier, appelons-le f à un serveur B. Les deux serveurs ont le même mot de passe. C'est le code:scp dans une session ssh imbriquée dans le paramiko de python

ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh.connect(hostname=hostname, username=username, password=password) 

chan = ssh.invoke_shell()  
chan.send('scp f [email protected]:.') 
buff = '' 
while not buff.endswith('\'s password: '): 
    resp = chan.recv(9999) 
    buff += resp 

chan.send(password + '\n') 
buff = '' 
while not buff.endswith('$ '): 
    resp = chan.recv(9999) 
    buff += resp 

Je ne sais pas vraiment pourquoi cela ne fonctionne pas. Toute aide est appréciée, merci beaucoup!

Répondre

0

Courez-vous cela dans PyCharm? À quel moment échoue-t-il et obtenez-vous des erreurs? Il se pourrait que la chaîne dans

buff.endswith('\'s password: '): 

ne correspond pas exactement à ce qui est à la session émis ssh. A part ça, ça a l'air correct. Je recommande le point d'arrêt à buff.endswith et l'inspection de ce qui est réellement dans le buff et la vérification pour voir si elle correspond à votre chaîne, ainsi que si votre mot de passe est valide avec ce caractère de nouvelle ligne là-bas.