我正在远程服务器上创建一些tar文件,我希望能够将它传到我的机器上。出于安全原因,我无法在该服务器上使用FTP。
所以我怎么看,我有两个选择:
以其他方式获取文件(作为文件)然后使用tarfile库 - 如果是这样,我需要帮助来获取没有FTP的文件。
获取文件的内容,然后将其解压缩。
如果有其他方式,我想听听。
import spur
#creating the connection
shell = spur.SshShell(
hostname=unix_host,
username=unix_user,
password=unix_password,
missing_host_key=spur.ssh.MissingHostKey.accept
)
# running ssh command that is creating a tar file on the remote server
with shell:
command = "tar -czvf test.gz test"
shell.run(
["sh", "-c", command],
cwd=unix_path
)
# getting the content of the tar file to gz_file_content
command = "cat test.gz"
gz_file_content = shell.run(
["sh", "-c", command],
cwd=unix_path
)
更多信息: 我的项目是在virtualenv上运行的。我使用的是Python 3.4。
答案 0 :(得分:2)
如果您具有SSH访问权限,则可以获得99%的SFTP访问权限。
因此您可以使用SFTP下载文件。请参阅Download files over SSH using Python。
或者在使用支线后,请参阅其SshShell.open
method:
例如,要通过SSH复制二进制文件,假设您已经有
SshShell
的实例:with ssh_shell.open("/path/to/remote", "rb") as remote_file: with open("/path/to/local", "wb") as local_file: shutil.copyfileobj(remote_file, local_file)
SshShell.open
方法使用SFTP(通过Paramiko库)。