postgresql 用に Python ファブリックをセットアップしようとしていますが、プロンプトで新しいパスワードを入力する方法がわかりません。ファブリックで次をどのように設定しますか。
sudo passwd –d postgres
sudo su postgres –c passwd
解決策1:
私がここで書いているのは、セキュリティの観点からの悪いハックです。コマンドラインでパスワードを提供するため、おもちゃの作業以外では使用しないでください。
with hide('running', 'stdout', 'stderr'):
run('echo -e "%s\n%s\n" | sudo passwd %s' % (passwd, passwd, user))
PS:このソリューションは、古いフォーマット手法を使用しています。それはあなたが新しいものを使うことを損なうべきではありません。
解決策2:解決策2:
Passwdはstdinからの入力を期待します。代わりに、pexpect / expectedを使用してこの作業を排他的に行うことができ、上記よりも優れたアプローチですが、欠陥がないわけではありません。
サンプルの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)
...