2012-01-19 9 views
1

インストールプロセスを自動化するために、複数のコマンドを異なるユーザーとして実行するbashスクリプトを作成しようとしています。Bashスクリプトからシェルを外す

ある時点で私は

su gpadmin 
gpperfmon_install --enable --password password --port 5432 
y 
gpstar 
y 

のsu gpadminは、rootで実行されている、それが実行されると、私はgpadminを終了して、rootとして戻るまで、スクリプトが停止します。

スクリプトを停止せずに新しいユーザーに切り替える方法を教えてください。

私の知らなかったことに申し訳ありませんが、私はGoogleに試みましたが、うまく機能していませんでした。 ご協力いただければ幸いです。

答えて

3

コマンドを実行して終了するには、suに-cオプションを使用する必要があります。 suに指定したオプションを使用すると、gpadminのデフォルトのシェルが実行され、シェルが終了するまでブロックされます。あなたがすでに持っているコードで判断すると、gpperfmon_installは対話型アプリケーションであり、これも別の問題です。場合によってはここの文書を使用することもできますが、それ以外の場合はexpectを使用する必要があります。

su gpadmin -c 'gpperfmon_install --enable --password password --port 5432 << EOF 
y 
gpstar 
y 
EOF' 
関連する問題