2013-08-20 57 views
0

我有一些freebsd服务器,并且没有sudo。但我想用root自动运行一些命令,就像下面的命令:Fabric:以root身份自动运行命令

def autodeploy(url): 
    with cd('/tmp'): 
     if not exists('releasetar.sh'): 
      put('/tmp/releasetar.sh', 'releasetar.sh', mode=0644) 
     run("wget '{}'".format(url)) 
     run('su - -m -c "cd /tmp && bash /tmp/releasetar.sh"') 

su-c选项致力于Linux,但在FreeBSD上并没有奏效。我该如何解决这个问题?我希望你的解决方案既可以在linux和freebsd上工作。谢谢您的回答~~

回答

2

如果你使用的面料可以只提供命令行的-u参数指定要运行的任务,因为

fab -u root <task name>

对于该用户在命令行中更多的选择退房http://docs.fabfile.org/en/1.7/usage/fab.html#command-line-options

您还可以设置您的用户名编程

from fabric.api import run, settings 

with settings(user="root"): 
    run("some-command") 
+0

对不起,我发现这不起作用,当我是freebsd上的普通用户时,它不会自动更改为root或要求我输入root密码。 – zjhui

+0

对不起,我没有freebsd机器,所以无法验证。也许看看http://docs.fabfile.org/en/latest/faq.html它提到了freebsd的一些注意事项 – Greg

0

从端口安装sudo/usr/ports/security/sudo)。

相关问题