質問
私は他の多くのスクリプトを呼ぶバッシュスクリプトを書いています。
いくつかのスクリプトはuser_1として実行する必要がありますが、いくつかのスクリプトはuser_2としてです。
スクリプトは、厳密な順序で呼び出す必要があります。スクリプトをuser_1として起動し、SUを何度も使用してuser_2になります。これらの時間はパスワードが必要なので、何度も再タイプする必要があります。それを避けたいのですが、SUにはパスワードパラメーターがありません。
Sudoと期待はインストールされていません。
解決 4
SSHを使用して問題を解決しました。 user_1の認証キーを生成し、user2に公開しました。パスワードはもう必要ありません。
ssh -l user_1 hostname "command_1; command_2"
他のヒント
user_1およびuser_2用のフォーク( '&'を使用)を作成します。 「ロックファイル」(セマフォ)を使用して(クライアントスーワーと同様)通信する必要があります。たとえば、user_1が何かをして、user_2チェックは「ロックファイル」が存在します while ...眠る ループ
たぶんそれは愚かですが、あなたは使用することができます
ssh user@localhost
エンドキー
あなたがたまたまZSHを持っているなら、私はあなたが簡単にこれを行うことができると思います - 次のようなこと
#!/bin/zsh
coproc user1_script
su user2
do_stuff
echo "your_turn" >&p
read MY_TURN
do_more_stuff
echo "your_turn" >&p
read MY_TURN
...
user1_script:
#!/bin/zsh
read MY_TURN
do_stuff
echo your_turn
read MY_TURN
do_more_stuff
...
あなたが立ち往生していて、ZSHを持っているなら、とにかく試してみる価値があります。
ルートとして実行できます。危険に聞こえますか?注意して各コマンドにsuを使用して、そうであるようにユーザー名を追加する場合ではありません。
su -c 'script1' user_1 && su -c 'script2' user_2
これにより(rootとして起動すると仮定する)、script1を実行する前にユーザーをユーザーをユーザー_1に変更してからルートに戻し、user_2に変更してscript2を実行します。すべて複数のパスワードを求めずに。