2010-10-15 30 views
5

我想执行一个需要在本地机器sudo的命令。正如文档所示,我使用了本地命令,但它要求我输入密码。我怎样才能避免这种情况?有什么地方可以保存我的本地机器密码吗?面料:本地命令的使用

local('sudo /etc/init.d/tomcat6 start',capture=True) 

回答

4

检查visudo命令,这将允许你编辑/etc/sudoers文件,在其中您可以定义用户,命令和密码要求的机器上(例如,用户mlzboy不需要为了进入密码执行/etc/init.d/tomcat6)。不要忘记这可能会造成安全问题。

Sudoers manual

4

如果你不打算共享的fabfile你可以使用:

echo "password\n" | sudo -S /etc/init.d/tomcat6 start 

根据sudo的手册页:

的S(标准输入)选项的原因sudo从 中读取密码,而不是终端设备的标准输入。密码 后面必须跟一个换行符。

+0

太棒了!作为魅力工作! – deeshank 2014-02-12 05:22:23

1

如果你想使用sudo,但是,回送IP:

from fabric.api import sudo,env 
env.hosts =['127.0.0.1'] 
sudo('aptitude search fabric') 

无需编辑sudoers文件,给你有一个SSH服务器在本地运行。