根据这份文档,使用Fabric,您可以运行一个任意的shell命令,而不需要像这样拥有一个fabfile
:
fab -H host1,host2 -- echo 'hello, world!'
您也可以以同样的方式运行sudo
命令,但是您需要为列表中的每个主机输入sudo
密码。
是否有一种避免为每个主机输入sudo
密码的方法,就像Fabric函数sudo()
一样?
myusername ALL=(ALL) NOPASSWD: ALL
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'}
您也可以考虑使用ssh密钥文件进行pam身份验证。这篇博客entry是一个不错的入门指南。
这样,您就不必牺牲安全性。假设您有一个合格的帐户,甚至可以在sudo操作之前将密钥文件复制到远程帐户中。 :-)
fab -H host0,host1,host2 -- sudo /root/bin/my_script_that_must_be_run_as_root.sh
。我知道如何编写一个fabfile来完成它,但我也想知道如何作为一个add-hoc命令来完成它。在这种情况下,-I选项似乎不起作用。我正在使用Fabric 1.6.0进行测试。 - Carl