7

使用 Fabric,根据此文档,您可以运行任意 shell 命令,而无需fabfile像这样:

fab -H host1,host2 -- echo 'hello, world!'

您也可以sudo以相同的方式运行命令,但系统会提示您输入sudo列表中每个主机的密码。

有没有办法避免sudo必须为每个主机输入密码,必须像 Fabric 功能一样sudo()工作?

4

3 回答 3

3

只需将以下行添加到 etc/sudoers,其中 myusername 应该是将运行 sudo 的预期用户。您应该了解执行以下操作的安全隐患。您可能还想限制以下选项以限制用户可以在没有密码的情况下执行 sudo 的命令。

myusername    ALL=(ALL) NOPASSWD: ALL
于 2012-11-08T19:10:14.437 回答
1

您可以设置env.password让织物发挥作用或...

...您还可以为多台机器使用密码:

from fabric import env
env.hosts = ['user1@host1:port1', 'user2@host2.port2']
env.passwords = {'user1@host1:port1': 'password1', 'user2@host2.port2': 'password2'}

看到这个答案:https ://stackoverflow.com/a/5568219/552671

于 2013-09-28T12:39:31.797 回答
0

您还可以考虑针对 ssh 密钥文件进行 pam-authentication。这篇博文是一个不错的入门读物。这样您就不必牺牲安全性。假设您确实有一个合格的帐户,您甚至可以在 sudo 操作之前将密钥文件复制到您的远程帐户中。:-)

于 2012-11-08T19:42:00.100 回答