2017-05-27 126 views
2

我想從我的web服務器拉文件,並希望用python做到這一點。我有下面的命令將遠程計算機上的文件放入並將它們全部拉回到本地計算機。我用os.system手動執行此操作,並提示輸入密碼。我輸入它並且它拉取文件。有無論如何檢測os.system的密碼提示,或者如果我使用pexpect,我檢測到密碼提示並輸入它,但文件不會被複制。有任何想法嗎?執行tar命令嵌入在ssh命令

ssh [email protected] 'tar -cvf - -C /usr/home/user1 .' | tar -xvf - 

username = "user1" 
servername = "myserver" 
mypath = "/usr/home/user1" 
import os 
os.system("ssh [email protected] 'tar -cvf - -C /usr/home/user1 .' | tar -xvf -") 
[email protected]'s password: 
+1

爲什麼不使用use scp? – 3141

回答

0

您應該能夠配置您的ssh連接不要求密碼,請參閱例如:http://web.archive.org/web/20160404025901/http://jaybyjayfresh.com/2009/02/04/logging-in-without-a-password-certificates-ssh/

請注意,您也可以使用scp複製遞歸整個文件夾:

scp -rp sourcedirectory [email protected]:/path 

-r遞歸地表示 -p表示保留屬性

+0

不幸的是我不能在這些服務器上使用certs。另外,我可以使用scp,但scp工作的方式會打開每個文件的關閉會話,並且需要更長的時間才能複製數百個文件,而只需在一個命令中使用一個會話複製tar文件。 –