Fabric:自动以root身份运行命令

时间:2013-08-20 01:45:20

标签: python freebsd fabric

我有一些freebsd服务器而且没有sudo。但是我想用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 个答案:

答案 0 :(得分: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")

答案 1 :(得分:0)

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