Python subprocess.popen在网络上运行

0 投票
2 回答
991 浏览
提问于 2025-04-18 13:29

在本地电脑上,使用Python的subprocess.popen就像吃蛋糕一样简单,但在网络上调用它是否可行呢?

举个例子,我有三台电脑,一台叫workstation-pc,另外两台分别叫node1-pc和node2-pc……

我能否从workstation-pc上调用node1-pc上的一个进程,最好是不需要在node1-pc上运行特殊的服务器软件?

无论如何,非常感谢任何回复!

Gilles

编辑 忘了提,我使用的是Python 3

2 个回答

0

Fabric可能是个不错的选择,不过在*unix环境下,你完全可以通过ssh来执行远程命令,没有什么能阻止你。

import subprocess
p = subprocess.Popen(['ssh', 'node1-pc', 'ls', '-ltr', '/etc'], stdout=subprocess.PIPE)
out, err = p.communicate()

out将会包含远程进程的标准输出,也就是你在远程执行命令时看到的结果。

1

我建议你使用以下其中一个工具:

使用Fabric的示例:

from fabric.api import env, run

env.hosts = ['host1', 'host2']

def mytask():
    run('ls /var/www')

撰写回答