如何在不输入密码的情况下运行Fabric任意sudo命令?

时间:2012-11-08 19:03:56

标签: python fabric

使用Fabric,根据this documentation,您可以运行任意shell命令而不需要像这样的fabfile

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

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

有没有办法避免必须为每个主机键入sudo密码,必须像Fabric函数sudo()一样工作吗?

3 个答案:

答案 0 :(得分:3)

只需将以下行添加到etc / sudoers,其中myusername应该是将运行sudo的目标用户。您应该了解执行以下操作所带来的安全隐患。您还可能希望限制以下选项以限制用户无需密码即可执行sudo的命令。

myusername    ALL=(ALL) NOPASSWD: ALL

答案 1 :(得分: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

答案 2 :(得分:0)

您还可以考虑对ssh密钥文件进行pam身份验证。一个很好的入门将是这个博客 - entry。 这样您就不必妥协安全性。您甚至可以将sudo-operations之前的密钥文件复制到您的远程帐户中,假设您拥有合格的帐户。 : - )