我想使用fabric作为工具来收集所有服务器负载并在之后处理这些值,我想到了这样的事情:
from fabric.api import run
for servername in servernames:
load_str = run('cat /proc/loadavg | cut -d' ' -f1', host=servername)
但是fabric不允许我以这种方式指定主机名,我发现这种IMO丑陋的方式:
from fabric.api import env, run
for servername in servernames:
env.host_string = servername
load_str = run('cat /proc/loadavg | cut -d' ' -f1')
还有更优雅的方式吗?
直接使用 paramiko,正如这里建议的那样,促使我编写一个自己的模块来抽象它 - 引用 fabrics 网站,这正是 fabric 应该为我做的:
除了通过 fab 傻瓜使用之外,Fabric 的组件还可以导入到其他 Python 代码中,从而为 SSH 协议套件提供一个比 Paramiko 提供的更高级别的 Pythonic 接口(Fabric 本身利用了它)。