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

Python 如何在不必键入密码的情况下运行Fabric任意sudo命令?,python,fabric,Python,Fabric,根据,使用Fabric,您可以运行任意shell命令,而无需像这样使用fabfile: fab -H host1,host2 -- echo 'hello, world!' 您也可以以相同的方式运行sudo命令,但会提示您为列表中的每个主机输入sudo密码 是否有一种方法可以避免为每个主机键入sudo密码,必须像Fabric函数sudo()一样工作?只需在etc/sudoers中添加以下行,其中myusername应该是运行sudo的预期用户。您应该了解执行以下操作的安全含义。您可能还希望限制

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

fab -H host1,host2 -- echo 'hello, world!'
您也可以以相同的方式运行
sudo
命令,但会提示您为列表中的每个主机输入
sudo
密码


是否有一种方法可以避免为每个主机键入
sudo
密码,必须像Fabric函数
sudo()
一样工作?

只需在etc/sudoers中添加以下行,其中myusername应该是运行sudo的预期用户。您应该了解执行以下操作的安全含义。您可能还希望限制以下选项,以限制用户无需密码即可执行的命令

myusername    ALL=(ALL) NOPASSWD: ALL

您也可以考虑对SSH密钥文件进行PAM认证。一个很好的入门应该是这个博客-。


这样你就不必危及安全。您甚至可以在sudo操作之前将密钥文件复制到您的远程帐户中,前提是您确实拥有一个合格的帐户。:-)

您可以设置
env.password
让fabric发挥神奇作用,或者

…您还可以为多台计算机使用密码:

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

看到这个答案:

原始海报似乎在问我如何在没有提示每个主机输入sudo密码的情况下执行以下操作:
fab-H host0,host1,host2--sudo/root/bin/my_script_必须作为_root.sh运行。我知道如何编写一个fabfile来完成它,但我也想知道如何作为一个addhoc命令来完成它。在这种情况下,-I选项似乎不起作用。我正在用Fabric 1.6.0进行测试。