長い睡眠通話の後にsudoコマンドを実行すると、sudoパスワードの再入力を求められません。

長い睡眠通話の後にsudoコマンドを実行すると、sudoパスワードの再入力を求められません。

私はX分間休止状態を維持してから、システム休止コマンドを実行する単純なbash関数を作成しようとしています(私のビューではsudo pm-suspendUbuntuにあるからです)。これで関数は次のようになります。

function sleepin {
  sleep $(bc <<< $1*60); sudo pm-suspend
}

最初のパラメータは、数分後に眠る必要があるかどうかです。問題は、スリープ後にスクリプトがsudoパスワードを求めるメッセージを表示することです。

スリープ後にsudoパスワードを求めるプロンプトが表示されないようにスクリプトを再構築するにはどうすればよいですか?

(通話を試みましたが、sudo sleepin 30まだパスワードを求めるメッセージが表示されます。睡眠呼び出しが十分に小さい場合、bashはパスワードを要求するメッセージを表示しませんが、睡眠時間が長くなるとパスワードを求めるメッセージが表示されます。)

答え1

sudoコマンドにスリープモードを追加します。

seconds=$(($1 * 60))
sudo sh -c "sleep $seconds; pm-suspend"

答え2

Matが提案したように、ユーザーはパスワードなしでpm-suspensionを実行できます。

走るsudo visudo

次へ追加youruser ALL=(root) NOPASSWD: /path/to/pm-suspend

答え3

トピックから抜け出す:atデーモンを使用したくない特別な理由はありますか?

echo 'pm-suspend' | sudo at now + 15 minutes

出発点になることもできます。

関連情報