提示输入 sudo 时聚焦 bash 窗口

提示输入 sudo 时聚焦 bash 窗口

我的 Debian 机器上的 bash 窗口中有一个脚本每五分钟循环一次。循环中的命令之一被调用为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

相关内容