(Python)通过跳转框连接子流程管道/运行命令

时间:2013-04-02 19:32:30

标签: python command subprocess

所以我想使用python在服务器上运行命令,但要做到这一点,我必须通过另一个框。我通过子进程运行ssh连接到第一个框。但是,我不确定如何进入第二个框并通过该子进程对象运行命令。

我的子流程声明:

command = "ssh servername"
sshConnection = subprocess.Popen(command.split(),stderr=subprocess.PIPE
                                  ,stdout=subprocess.PIPE,stdin=subprocess.PIPE)

我能想到的唯一方法:

以某种方式连接两个子进程命令的管道? 首先建立SSH隧道,然后运行命令? 还有其他想法吗?我接近这个错误吗?

3 个答案:

答案 0 :(得分:0)

怎么样:

cmd = "mycmd myarg1 myarg2"
ssh_command = "ssh servername %s" % cmd
sshConnection = subprocess.Popen(ssh_command.split(),stderr=subprocess.PIPE
                                  ,stdout=subprocess.PIPE,stdin=subprocess.PIPE)

当然,如果命令包含特殊字符,你还需要shell-escape命令。

我个人喜欢使用plumbum的替代方案。您可以嵌套远程(ssh)命令。

答案 1 :(得分:0)

如果通过“浏览另一个框”,表示“启动从跳转框到服务器的ssh连接”,请尝试:

command = "ssh jumpbox ssh servername /bin/ls -l"
sshConnection = subprocess.Popen(command.split(),stderr=subprocess.PIPE
                              ,stdout=subprocess.PIPE,stdin=subprocess.PIPE)

答案 2 :(得分:0)

由于你在子进程中做了很多ssh,我建议你使用Fabric