我試圖運行使用subprocess.Popen
的scp
(安全複製)命令。登錄需要我發送密碼:發送過SSH或SCP密碼與subprocess.Popen
from subprocess import Popen, PIPE
proc = Popen(['scp', "[email protected]:/foo/bar/somefile.txt", "."], stdin = PIPE)
proc.stdin.write(b'mypassword')
proc.stdin.flush()
這立即返回一個錯誤:
[email protected]'s password:
Permission denied, please try again.
我一定密碼是正確的。我可以通過在shell上手動調用scp
來輕鬆驗證它。那麼爲什麼這不起作用呢?
注意,有很多類似的問題,這一點,詢問subprocess.Popen
和自動化SSH或FTP登錄發送一個密碼:
How can I set a users password in linux from a python script?
Use subprocess to send a password
答案(S)對這些問題不要」牛逼的工作和/或因爲我使用Python 3
我不熟悉這個代碼,但您嘗試使用-p參數?也作爲驗證方法的密鑰交換? – diego2k 2013-03-01 21:16:11
With -pi mean「-p mypassword [email protected]:/foo/bar/somefile.txt」我不知道你是否可以這樣做 – diego2k 2013-03-01 21:16:55
@ diego2k據我所知,scp不接受切換通過命令行輸入密碼(其手冊頁不包含此類內容)。一般來說它不是在命令行上提供密碼很好的做法,因爲這會被記錄下來在.bash_history的 – entropy 2013-03-01 21:25:39