Python最佳实践:是使用子进程/结构调用还是使用Linux脚本?

时间:2015-04-16 04:55:42

标签: python linux shell subprocess fabric

我有一个用例,我需要在远程计算机上运行Linux命令。目前,我正在使用Fabric实现功能。但是,我想知道使用Shell脚本而不是Python是否会更好。

我的用例是设置一些服务,在MySQL中设置dbs,另外创建一些脚本然后在远程机器上执行。目前,我在Fabric调用中嵌入了大约50-60行命令 所有东西都必须在远程机器上执行,并且为此我使用结构创建了与机器的连接,并且我使用run / sudo函数运行命令。对于所有不同的命令行,我使用的是单独的run方法。

如果我必须使用shell脚本,我还有两种方法:

  1. 使用结构调用在远程计算机上运行脚本。
  2. 将脚本ssh放入另一台机器,并在那里运行。
  3. 实现功能的最佳Pythonic方法是什么。

1 个答案:

答案 0 :(得分:0)

您是否考虑过使用paramiko

以下是Brandon Rhodes“Python网络编程基础”的一个简单示例:

import paramiko

class AllowAnythingPolicy(paramiko.MissingHostKeyPolicy):
        def missing_host_key(self, client, hostname, key):
                return
client = paramiko.SSHClient()
client.set_missing_host_key_policy(AllowAnythingPolicy())
client.connect('127.0.0.1', username='username', password='python')

for command in 'echo "Hello, world!"', 'uname -a', 'uptime':
        stdin, stdout, stderr = client.exec_command(command)
        stdin.close()
        print repr(stdout.read())
        stdout.close()
        stderr.close()

client.close()

干杯,亚瑟