如何知道是否使用python完成了复制过程(scp)?

时间:2018-12-10 05:01:26

标签: python shell centos7 scp sshpass

我有一个用于日志分析的python程序。 该日志位于具有端口号和密码的另一台服务器中。

我无法将python代码存储在该服务器中。因此,我需要将文件保存到存储程序的服务器上。

我这样做了:

popen('''sshpass -p "password" scp -r \
    admin@192.158.11.109:/home/admin/DontDeleteMe/%s /home/admin/''' % fileName)

但是如果文件很大,程序将在完成复制过程之前运行。

1 个答案:

答案 0 :(得分:1)

popen()不等待该过程完成。您可以使用subprocess.call()

exitcode = subprocess.call('''sshpass -p "password" scp -r \
    admin@192.158.11.109:/home/admin/DontDeleteMe/%s /home/admin/''' % fileName,
    shell=True)

根据Python的doc

  

subprocess模块允许您生成新进程,连接到它们的输入/输出/错误管道,并获取它们的返回码。 该模块打算替换一些较旧的模块和功能:

os.system
os.spawn*
os.popen*
popen2.*
commands.*