更改远程位置的工作目录

时间:2015-07-31 14:16:14

标签: python subprocess

如果有任何方法可以使用subprocess或pxssh模块更改远程服务器上的当前工作目录,我感兴趣。这样做的目的是创建新目录,并复制/粘贴文件。此外,对我来说,知道是否有任何方法可以在一个过程中完成这些操作。 执行以下命令对我没有帮助,因为在命令执行完成后进程立即终止。

import subprocess
p=subprocess.Popen(['ssh', '15.27.23.2','cd /home/incoming'], shell=True)
p.wait()

有谁知道这样做的方法?不应使用第三方库。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

正如您所看到的,程序会创建一个SSH连接到远程主机,在那里它运行一个shell,然后(因为没有其他命令)立即终止。每个进程都有自己的“当前目录”,包括您在远程计算机上运行的进程。

显然,一种方法是发送一个更长的命令字符串,其中包括mkdircd,然后是您要运行的命令。

更好的方法是调查fabric的使用,它具有允许您在所需上下文中运行任意远程命令的功能。您面临的具体问题在this documentation page上得到解决,仅此一项就可以向您展示如何继续使用mkdir project && cd project && do-something等命令。