我有一些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上运行。谢谢你的回答~~
答案 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
。