1

我正在尝试为 postgresql 设置 python 结构,但无法弄清楚如何在提示符下输入新密码。你如何在fabric中设置以下内容:

sudo passwd –d postgres
sudo su postgres –c passwd
4

1 回答 1

1

解决方案1:

从安全的角度来看,我在这里写的是一个糟糕的黑客攻击。它在命令行上提供密码,因此除了玩具工作之外,不应在任何地方使用它:

with hide('running', 'stdout', 'stderr'):
    run('echo -e "%s\n%s\n" | sudo passwd %s' % (passwd, passwd, user))

PS:此解决方案使用较旧的格式化技术。这不应该影响您使用较新的。

解决方案2:

Passwd 期望来自标准输入的输入,您可以改为使用 pexpect / expect 来专门完成这项工作,并且比上述方法更好,但并非没有缺陷。

示例 pexpect 程序:

child = pexpect.spawn('some command that expects password')
child.expect('Enter password:')  
child.sendline('somepassword')
child.expect('Enter password:')  --- passwd may ask twice
child.sendline('somepassword')
child.expect(pexpect.EOF, timeout=None)
...
于 2012-06-20T22:17:26.317 回答