我不确定我是否应该在这里或其他一些堆栈交换社区问这个问题,但我正在尝试使用 python 结构在服务器列表上运行一些简单的命令。
命令的代码:
from fabric.api import run
def host_type():
run('uname -s')
uname -s
这将通过调用以下命令在所有 Linux 服务器上运行该命令:
$fab -H < ......Comma, separated , Servers , List , Here.....> host_type
现在的问题是,我如何运行它/配置它,以便它返回结果而不在执行期间询问用户/root 密码。可能有一些 Linux 命令行技巧,但我不记得了。
编辑1:
好吧,fab 命令有一个 -p 选项,但每个服务器都有不同的密码,所以这个选项可能对我不起作用。
答案1
有两种方法可以做到这一点。在后端Fabric
使用openssh
,因此如果您已经配置了无密码连接,那么您将不需要设置任何内容,它就会工作。
另一种方法也很简单。您只需要设置env
变量。
from fabric.state import env
env.user = "user"
env.password = "password"
env.colorize_errors = True
env.connection_attempts = 3
env.disable_known_hosts = True
env.skip_bad_hosts = True
env.parallel = False
env.linewise = True
这应该可以解决问题。我通常将其放在单独的文件中并导入。
PS:我个人认为paramiko
哪个库Fabric
更容易用于更简单的任务。