2017-04-02 54 views
1

基本上,我在Python中通過嵌套的SSH ssh會話執行scp時遇到了問題。我使用paramiko來建立從本地機器到另一個服務器的SSH,我們稱之爲AA。我想要scp文件,我們稱之爲f到服務器B。兩臺服務器都有相同的密碼。這是代碼:在python的paramiko中嵌套的ssh會話中的scp

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 

我真的不知道爲什麼這不起作用。任何幫助表示讚賞,非常感謝!

回答

0

你在PyCharm中運行它嗎?它在什麼時候失敗,並且你有什麼錯誤?這可能是

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

中的字符串與ssh會話中輸出的內容不完全匹配。除此之外,它看起來是正確的。我會建議在buff.endswith中檢測一下,並檢查buff中的實際內容,並檢查它是否與你的字符串匹配,以及如果你的密碼對那裏的換行符有效。