使用Fabric,根据this documentation,您可以运行任意shell命令而不需要像这样的fabfile
:
fab -H host1,host2 -- echo 'hello, world!'
您也可以以相同的方式运行sudo
命令,但系统会提示您输入列表中每个主机的sudo
密码。
有没有办法避免必须为每个主机键入sudo
密码,必须像Fabric函数sudo()
一样工作吗?
答案 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'}
答案 2 :(得分:0)
您还可以考虑对ssh密钥文件进行pam身份验证。一个很好的入门将是这个博客 - entry。 这样您就不必妥协安全性。您甚至可以将sudo-operations之前的密钥文件复制到您的远程帐户中,假设您拥有合格的帐户。 : - )