我使用fabric通过命令运行fastcgi_mono服务:
sudo('/etc/init.d/fastcgi_mono restart', pty=False)
但是当我执行它时,它给了我这个错误:
[52.192.204.174] run: sudo /etc/init.d/fastcgi_mono restart
[52.192.204.174] out: sudo: sorry, you must have a tty to run sudo
[52.192.204.174] out:
Warning: run() received nonzero return code 1 while executing 'sudo /etc/init.d/fastcgi_mono restart'!
我该如何解决这个问题?请帮忙。
答案 0 :(得分:0)
我解决这个问题的方法是,我不知道是否有更好的方法,但它在我的头脑中是有道理的:我在fabfile.py中设置了两个用户,ubuntu
(具有sudo权限)和www-data
(没有任何实际权利,只能在其“空格”(/ server / *)中添加/删除目录)。我总是使用ubuntu
建立连接,这样我可以在需要时使用sudo()
。当我需要在应用程序级别执行某些操作时,我称之为def deploy()
我使用应用程序用户进行连接,因此我执行以下操作:
@settings(user='www-data')
def deploy():
run('whoami') # will say www-data
或者如果我需要在sudo()
内进行某种deploy()
我会这样做:
def deploy():
sudo('whoami') # will say ubuntu/root
with settings(user='www-data'):
run('whoami') # will say www-data
... more code here
所以回顾一下:
答案 1 :(得分:0)
是的,我找到了答案。对于Amazon实例,您需要禁用requiretty
comment('/etc/sudoers', 'Defaults requiretty', use_sudo=True)