Python 执行嵌入在ssh命令中的tar命令

Python 执行嵌入在ssh命令中的tar命令,python,ssh,Python,Ssh,我正在尝试从我的Web服务器中提取文件,并希望使用python来实现这一点。我在下面有一个命令,它将在远程机器上标记文件,并将它们全部拉回到本地机器。我使用os.system手动执行此操作,它会提示我输入密码。我输入它,它会拉取文件。是否仍然可以从os.system检测密码提示,或者如果我使用pexpect,我会检测密码提示并输入,但不会复制文件。有什么想法吗 ssh user1@myserver 'tar -cvf - -C /usr/home/user1 .' | tar -xvf -

我正在尝试从我的Web服务器中提取文件,并希望使用python来实现这一点。我在下面有一个命令,它将在远程机器上标记文件,并将它们全部拉回到本地机器。我使用os.system手动执行此操作,它会提示我输入密码。我输入它,它会拉取文件。是否仍然可以从os.system检测密码提示,或者如果我使用pexpect,我会检测密码提示并输入,但不会复制文件。有什么想法吗

ssh user1@myserver 'tar -cvf - -C  /usr/home/user1 .' | tar -xvf -

username = "user1"
servername = "myserver"
mypath = "/usr/home/user1"
import os
os.system("ssh user1@myserver 'tar -cvf - -C  /usr/home/user1 .' | tar -xvf -")
user1@myserver's password:

您应该能够将ssh配置为在不询问密码的情况下进行连接,例如,请参阅:

注意,您还可以使用scp递归复制整个文件夹:

scp -rp sourcedirectory user@dest:/path
-r
表示递归
-p
表示保留属性

为什么不使用scp?很遗憾,我无法在这些服务器上使用证书。我也可以使用scp,但scp的工作方式是,它打开关闭每个文件的会话,复制数百个文件所需的时间比在一个命令中复制一个tar文件所需的时间要长得多。