sudo를 묻는 메시지가 표시되면 Focus bash 창

sudo를 묻는 메시지가 표시되면 Focus bash 창

내 데비안 컴퓨터의 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에 따라 창이 깜박이거나 맨 위로 팝업되도록 해야 합니다.

관련 정보