我想在本地机器上执行一个需要 sudo 的命令。因此,正如文档所建议的那样,我使用了本地命令,但它要求我输入密码。我怎样才能避免这种情况?有什么地方可以保存我的本地机器密码吗?
local('sudo /etc/init.d/tomcat6 start',capture=True)
如果您不打算共享 fabfile,您可以使用:
echo "password\n" | sudo -S /etc/init.d/tomcat6 start
根据 sudo 手册页:
-S (stdin) 选项使 sudo 从标准输入而不是终端设备读取密码。密码后面必须跟一个换行符。
检查visudo
命令,这将允许您编辑/etc/sudoers
文件,您可以在其中定义机器上的用户、命令和密码要求(例如,用户 mlzboy 不需要输入密码即可执行/etc/init.d/tomcat6
)。不要忘记这会造成安全问题。
如果您想使用 sudo 但在环回 ip 上:
from fabric.api import sudo,env
env.hosts =['127.0.0.1']
sudo('aptitude search fabric')
无需编辑 sudoers,因为您有一个在本地运行的 ssh 服务器。