A primeira vez que sudo
é chamada é solicitada. Então, dependendo da configuração, se invocado dentro de N minutos (padrão 5 minutos IIRC), não é necessário digitar a senha novamente.
Você pode fazer algo como:
sudo echo >/dev/null || exit 1
ou talvez algo como:
sudo -p "Become Super: " printf "" || exit 1
no início do script.
Se você quiser impedir que alguém faça sudo ./your_script
, você deve verificar o EUID também ( bash ):
if [[ $EUID -eq 0 ]]
then
printf "Please run as normal user.\n" >&2
exit 1
fi
ou algo parecido:
if [ "$(id -u)" = "0" ]
...
Em qualquer caso, verifique também qual shell você está usando. Ou seja,
etc.
Para "manter ativo" , é possível fazer algo como :
while true; do
sleep 300
sudo -n true
kill -0 "$$" 2>/dev/null || exit
done &