내 데비안 컴퓨터의 bash 창에는 5분마다 반복되는 스크립트가 있습니다. 루프의 명령 중 하나는 로 호출됩니다 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에 따라 창이 깜박이거나 맨 위로 팝업되도록 해야 합니다.