Você pode usar sudo -nv 2> /dev/null
para obter um valor de saída de 0 quando as credenciais estiverem lá, sem ser solicitada a senha.
Eu tenho algo parecido para executar fdisk
e eliminar as credenciais
se não estivesse lá para começar. Combinado com a captura Ctrl + C , você obteria algo como (eu não sou um bom programador bash!):
#! /bin/bash
# this only removes credentials if logging in at the start was necessary
reset_sudo()
{
if [ $SUDOCREDCACHED != 0 ] ; then
# drop credentials if acquired in script
sudo -k
fi
}
Ctrl_C()
{
reset_sudo
exit 0
}
sudo -nv 2> /dev/null
SUDOCREDCACHED=$?
if [ $SUDOCREDCACHED != 0 ] ; then
# acquire credentials
sudo -v
if [ $? != 0 ] ; then
exit 1
fi
fi
trap Ctrl_C SIGINT
### your stuff here ###
reset_sudo