我有一个用例,我需要在远程计算机上运行Linux命令。目前,我正在使用Fabric实现功能。但是,我想知道使用Shell脚本而不是Python是否会更好。
我的用例是设置一些服务,在MySQL中设置dbs,另外创建一些脚本然后在远程机器上执行。目前,我在Fabric调用中嵌入了大约50-60行命令 所有东西都必须在远程机器上执行,并且为此我使用结构创建了与机器的连接,并且我使用run / sudo函数运行命令。对于所有不同的命令行,我使用的是单独的run方法。
如果我必须使用shell脚本,我还有两种方法:
实现功能的最佳Pythonic方法是什么。
答案 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()
干杯,亚瑟