在Fabric中切换用户始终提示输入密码

时间:2016-12-30 11:32:52

标签: python fabric

我尝试了多种方法来切换用户使用postgresfabric执行还原备份。

这是我目前的代码:

# -*- coding: utf-8 -*-
from datetime import datetime
from fabric.api import run, env, settings, hosts, execute
from fabric.operations import get

...

@hosts(['127.0.0.1'])
def restore_localdb(dump_file):
    with settings(user="postgres"):
        run('dropdb potato')
        run('createdb -E UTF8 -O potato potato')

    run('psql -U potato -h localhost potato -W < %s' % dump_file)


def local_clone():
    dump_file = execute(backupdb)
    execute(restore_localdb, dump_file)

当我假设系统已切换到potato用户时,我无法理解dropdb potato句子postgres密码的提示。

我尝试使用sudo,但restore_localdb中的切换内的两个句子必须以postgres执行。

我也试过了env.user而没有。还有:

sudo('dropdb potato', user='postgres')

同样的结果。

local命令对我没用,因为我需要在用户之间切换,而我无法使用local进行切换。

我只想模仿这些bash命令:

> sudo su - postgres
# I'll write the password for root
> dropdb potato
# The database is finally dropped without any more prompts

有什么想法吗?

0 个答案:

没有答案