使用 Fabric,根据此文档,您可以运行任意 shell 命令,而无需fabfile
像这样:
fab -H host1,host2 -- echo 'hello, world!'
您也可以sudo
以相同的方式运行命令,但系统会提示您输入sudo
列表中每个主机的密码。
有没有办法避免sudo
必须为每个主机输入密码,必须像 Fabric 功能一样sudo()
工作?
只需将以下行添加到 etc/sudoers,其中 myusername 应该是将运行 sudo 的预期用户。您应该了解执行以下操作的安全隐患。您可能还想限制以下选项以限制用户可以在没有密码的情况下执行 sudo 的命令。
myusername ALL=(ALL) NOPASSWD: ALL
您可以设置env.password
让织物发挥作用或...
...您还可以为多台机器使用密码:
from fabric import env
env.hosts = ['user1@host1:port1', 'user2@host2.port2']
env.passwords = {'user1@host1:port1': 'password1', 'user2@host2.port2': 'password2'}
您还可以考虑针对 ssh 密钥文件进行 pam-authentication。这篇博文是一个不错的入门读物。这样您就不必牺牲安全性。假设您确实有一个合格的帐户,您甚至可以在 sudo 操作之前将密钥文件复制到您的远程帐户中。:-)