在远程计算机上递归执行本地定义的python脚本

时间:2012-01-06 21:42:21

标签: python ssh

我对编写脚本感兴趣,以便脚本的唯一副本驻留在我的本地计算机上,但脚本在远程计算机上执行,可能是远程计算机在其他远程计算机上执行脚本(即2或分布式调用树中更多级别的递归。)

实现此目的的一种方法是将脚本一步复制到远程计算机,然后在第二步中通过ssh执行远程执行,将适当的参数传递给脚本,该脚本将为每个远程调用传递不同的参数,每个都将通过以下方式执行:

subprocess.call(['ssh', <user@address>, 'python scriptname.py <params>'])

是否可以在不首先复制python脚本的情况下一步完成此操作。显然,我仍然需要以某种方式将脚本中的代码作为远程调用的一部分进行传输,但最好不要运行两个单独的命令,甚至可能需要三分之一来清理远程调用的文件脚本运行后的机器。

4 个答案:

答案 0 :(得分:2)

不,你不可能一步到位(除了python -c 'print "hello world"'之外)。但是fabric可能会让你的生活变得更轻松。

答案 1 :(得分:1)

Python二进制文件有一个-c选项,允许您将有效的Python代码作为参数传递。例如:

$ python -c "print 'hello'; print 'world'"

打印

hello
world

您的脚本可能具有依赖性或者过于复杂,但它确实处理了更多琐碎的命令。

答案 2 :(得分:0)

我知道sshuttle将此“引导”作为其正常执行的一部分。它假设在ssh连接的远程端存在Python解释器,并上传要运行的代码。

我没有调查过代码,以确切了解它的作用,但找到它应该相当简单。

答案 3 :(得分:0)

结帐Fabric。它是Python工具,用于编写和执行Python函数或任务,以自动化与远程服务器的交互。&#34; #