0

postgres データベースからデータ ダンプを取得する必要があります。

postgres ホームにログインするにはどうすればよいですか? . 次のスクリプトがありますが、機能しません。

#!/bin/sh$                                                                      
export PASSWORD= something                                                      
echo $PASSWORD | sudo -S su postgres                                                                                                                 
pg_dump somedb > dump.txt+`date +%Y-%m-%d`          

ただし、このスクリプトを実行するpostgres@gauss:$と、スクリプトがエラーをスローしないと同時にログに記録されません。ここで間違っていることがありますか?

4

2 に答える 2

2

スクリプトが失敗する理由は、次の行です

 echo $PASSWORD | sudo -S su postgres

su従属シェルをフォークさせます。sudo -Sそのシェルは、パスワードの読み取りで既に使い果たされた標準入力から読み取ろうとします。シェルは入力がなくなる (EOF) と、シェルを終了します。スクリプトの次の行は、その引用された行が発生しなかったかのように実行されるため、UID で実行されます。

あなたが望むことを行うためのより良い方法については、j.hloetzekの回答を参照してください。

また、貼り付けたスクリプトには 2 つの構文エラーがありますが、とにかくそのアプローチを使用しないでください。

于 2013-05-26T20:02:35.623 に答える
0

sudoコマンドにパスワードをパイプすることはできませんが、/etc/sudoers特定のコマンドをパスワードなしで実行できるようにすることができます (正確な構文を確認してください!)

username YOURUSERNAME = NOPASSWD: /sbin/su postgres
于 2013-05-26T16:26:04.110 に答える