私のDebianコンピュータのbashウィンドウには5分ごとに繰り返されるスクリプトがあります。ループ内のコマンドの1つがとして呼び出されますsudo
。初めてスクリプトを起動するときにパスワードを入力し、次のsudo
数回のループでこれを行う必要はありません。
しばらくすると、sudo
パスワードの入力を求められ、スクリプトが効果的に停止します。この時間が長くなる可能性があることを知っていますが、そうしたくありません。パスワードの入力を求められた場合にのみ、bashウィンドウが集中するようにしたいと思います。可能ですか?
ベストアンサー1
コマンドがパスワードプロンプトをオンにするかどうかを事前に検出する方法はありませんが、パスワードプロンプトを返す機能をsudo
利用できます(この内容を参照)。askpass
回答の根拠と説明)
sudo_response=$(SUDO_ASKPASS=/bin/false sudo -A whoami 2>&1 | wc -l)
if [ $sudo_response = 2 ]; then
# Password need to be inserted
can_sudo=1
elif [ $sudo_response = 1 ]; then
can_sudo=0
# Check if currently in sudo timeout, which means no password to insert
sudo_response=$(SUDO_ASKPASS=/bin/false sudo -A whoami 2>&1)
# Check if `whoami` is equal to `root`
if [ sudo_response == "root" ]; then
can_sudo=2
fi
else
echo "Unexpected sudo response: $sudo_response" >&2
exit 1
fi
# can_sudo legend
## 0: Doesn't have sudo permission
## 1: Needs to insert password
## 2: No need to insert password
その後、can_sudo==1
端末がそれをサポートして有効になっていることを確認してください。 (反応方式は端末とDEによって異なります。)
BELL
次のコマンドを送信してASCII文字を使用できます。
echo -e "\a"
DEによっては、ウィンドウが点滅するか、一番上にポップアップする必要があります。