在Tar SSH管道shell调用后恢复Python?

2024-10-01 17:34:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将自定义地图贴(如google地图)从家庭服务器传输到云服务器。我能传输它们的最快方法似乎是tarssh管道方法。你知道吗

tar czpf - ./tiles | ssh -i myprivate.key user@ssh.example.com "tar xzpf - -C /www/tiles/"

这在命令行上运行得很好,但是现在我希望我的python脚本能够自动推送平铺。我试过:

os.system('tar czpf - ./tiles | ssh -i myprivate.key user@ssh.example.com "tar xzpf - -C /www/tiles/"')

以及子进程.Popen变体,它们都将我的所有地图分幅复制到远程服务器,但是系统shell不会关闭并将控制权返回给python脚本,因此脚本挂起并且没有完成。你知道吗

我猜管道或焦油重定向到标准输出时发生了什么事操作系统完成。我在想,可能是远程tar负责解压,正在等待更多的STDIN通过管道,但没有其他来?我真的不太了解这件事,谢谢你的帮助。你知道吗

我是否可以做些不同的事情来完成脚本的其余部分,同时仍然能够实现tarssh管道传输方法的好处?你知道吗

谢谢!你知道吗


Tags: 方法key服务器脚本com管道example地图
1条回答
网友
1楼 · 发布于 2024-10-01 17:34:57

你知道吗操作系统()已弃用,取而代之的是子流程模块。你知道吗

我在python2.7解释器中运行了这个。它成功了,并立即恢复了控制:

import subprocess
try:
    if subprocess.call(["/bin/bash", "tar_ssh.sh"]) == 0:
        print "success!"
    else:
        print "failed! :("
except Exception as e:
    print(str(e))

它叫焦油_宋承宪其中只包含您的命令(假定公钥身份验证,而不是密码验证):

tar czpf - ./source_folder/ | ssh username@ip_or_hostname "tar xzpf - -C /destination_folder/"

相关问题 更多 >

    热门问题