ユーザーがpasswdを使用して透過的にパスワードを変更できるこのスクリプトがあります。スクリプト自体は root によって実行され、
su - <user> -c "script"
スクリプトを起動する方法があまり安全ではないことはわかっていますが、それがその方法であり、その部分を変更する自由はありません。
私の問題は、呼び出されたときに passwd が次のように表示されることです。
Changing password for user <user>.
Changing password for <user>
current (UNIX) password:
New UNIX password:
Retype new UNIX password:
ここで注意すべき点がいくつかあります。
- 2行で始まるのはなぜですか?最初は root が passwd を呼び出したときに表示され、2 番目は自分自身で passwd を呼び出したときに表示されるようです。説明の始まりでしょうか?
- これらのプロンプトからいくつかの単語を除外する必要があります。grep と seds を次々にパイプで組み合わせて使用することを考えましたが、ここにトリックがあります。最初の 2 行は stdout に出力されているようですが、他の行は stderr に出力されているようです。stderr を stdout にリダイレクトして処理しようとすると、何も表示されなくなります。
この状況に関する回答やヒントはありますか? どうもありがとう。
(ここで最初の質問ですので、お気軽にお問い合わせください。)