0

私はいくつかの freebsd サーバーを持っていますが、sudo を持っていません。しかし、次のコマンドのように、ルートでいくつかのコマンドを自動的に実行したい:

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"')  

suwithオプションは-cLinux では機能しましたが、freebsd では機能しませんでした。どうすればこの問題を解決できますか? あなたのソリューションが Linux と freebsd の両方で機能することを願っています。ご回答ありがとうございます~~

4

2 に答える 2

2

fabric を使用している場合は、コマンド ラインから -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")
于 2013-08-20T01:54:59.667 に答える
0

sudoポート ( ) からインストールします/usr/ports/security/sudo

于 2013-10-05T22:24:07.483 に答える