別のスクリプト内で呼び出されるスクリプトの開始に関するパスワードを提供する

別のスクリプト内で呼び出されるスクリプトの開始に関するパスワードを提供する

私は別のスクリプトを呼び出すシェルスクリプトを作成しましたが、2番目のスクリプトはパスワードの入力を求めます。パスワードを提供し、ユーザーに知らせずにプロンプ​​トを渡したいと思います。

これは私のスクリプトです。

su - s3 -c "su.sh"

私は以前試しました:

su - s3 -c "echo pass | su.sh"

しかし、エラーが発生します。

standard in must be a tty

修正する:

コマンドのスクリーンショット。

ここに画像の説明を入力してください。

私も疲れています:

 su - s3 -c "echo mypass|sudo -S su.sh"

しかし、別のエラーが発生します。

sudo: sorry, you must have a tty to run sudo

su.shコマンド:

if [ ! -n "$IS_WINDOWS" ]
then
   /bin/su root -c "...."
fi

答え1

一つ開くべきだと思いますフーティ。あなたは試すことができますsocat:

echo pass | socat -  exec:su.sh,pty,stderr,su=s3,ctty

これにより、セキュリティの問題になる可能性があるコマンドライン引数にパスワードが表示されなくなります。

より良いオプションは、su.shパスワードが不要になった方法で修正することです。

答え2

あなたはそれを使用することができます予想されるプログラムは、パスワードを要求すると応答を提供します。これにはパスワードをハードコードするセキュリティ上の問題もあり、通常はパスワードなしでコマンドを実行するようにsudoルールを設定するのが最善です。

関連情報