2017-05-27 127 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文件。 –