sudo アクセスがあり、パスワードが既に認証されているかどうかをすばやく確認できるようにしたいと考えています。実行しようとしている操作に特に sudo アクセスできることを心配していませんが、それは素晴らしいボーナスです。
具体的には、これを使用しようとしているのは、さまざまなユーザーが実行できるようにしたいスクリプトです。一部にはsudoアクセスがあります。全員が root パスワードを知っています。
彼らが私のスクリプトを実行するとき、可能な場合はパスワードの入力を求めずに sudo パーミッションを使用し、それ以外の場合はルートパスワードを要求するようにします (彼らは sudo アクセスを持っていない可能性があるため)。
私の最初の非動作の試みは、STDIN を閉じた状態で分岐するsudo -S true
か、/dev/null から読み取ることでした。ただし、それでもパスワードの入力を求められ、数秒待ちます。
0.3秒待ってすぐに成功するかどうかを確認するなど、他のいくつかのことを試しましたが、試したことはすべて何らかの状況で失敗します。(タイムアウトが短すぎるからではありません。) 何が起こっているのかを理解するのは難しいです。
動作しないことがわかっていることの 1 つは、実行する前に STDIN を閉じるか、パイプに接続することsudo -S true
です。パスワードプロンプトがすぐに失敗することを望んでいましたが、それでもプロンプトが表示され、奇妙な動作をします。端末が欲しいかも。