Tente verificar o comando on_ac_power
. De man on_ac_power
:
NAME
on_ac_power - test whether computer is running on AC power
SYNOPSIS
on_ac_power
DESCRIPTION
on_ac_power checks whether the system is running on AC power (i.e., mains power) as opposed to battery
power.
OPTIONS
None.
EXIT STATUS
0 (true) System is on mains power
1 (false) System is not on mains power
255 (false) Power status could not be determined
if on_ac_power; then
echo "You are on AC-Power" # System is on mains power
else
echo "Power Lost" # System is not on mains power
fi
Você precisa verificar o status da energia CA em cada intervalo X de tempo. É a maneira mais fácil de executá-lo em segundo plano, dentro de um loop while:
while true
do
if on_ac_power; then
echo "You are on AC-Power" # System is on main power
else
echo "Power Lost" # System is not on main power
fi
sleep [Seconds]
done
Salve seu script ( ChechMainPWR.sh
) e, se quiser executar o script na inicialização, adicione uma linha em /etc/rc.local
para chamar seu script ( ChechMainPWR.sh
) + "& amp;" para sair. Assim
sh /home/USERNAME/ChechMainPWR.sh $
Reinicie e veja as alterações.
BÔNUS
Se você quiser ver o alerta quando ele estiver perdido ou não estiver conectado à sua notificação na área de trabalho, você poderá usar o programa notify-send
.
notify-send "Main Power Lot!" "System is now shutting down"
Veja man notify-send
para mais informações.
NAME
notify-send - a program to send desktop notifications
SYNOPSIS
notify-send [OPTIONS] <summary> [body]
DESCRIPTION
With notify-send you can sends desktop notifications to the user via a notification daemon from the command
line. These notifications can be used to inform the user about an event or display some form of information
without getting in the user's way.
O roteiro final seria assim:
Roteiro final
while true
do
if ! on_ac_power; then # System is not on main power
notify-send "Main Power Lot!" "System is going down after 10 seconds"
sleep 10
echo YOUR_PASSWORD | sudo -kS shutdown -h now
#####^^^^^^^^^^^^^ VERY VERY VERY insecure! ##########
fi
sleep 300 # check main power status every 5 minutes
done
Aviso: O echo YOUR_PASSWORD | sudo -kS shutdown -h now
funciona, mas é extremamente inseguro, pois sua senha está escrita em seu histórico e também pode estar visível para outros usuários por meio de uma listagem de processos.
Então solução alternativa é; Você pode configurar seu sistema que sudo someCommand
não requer uma senha (no meu caso para sudo shutdown
).
Para fazer isso, execute sudo visudo
e adicione a seguinte linha no END no arquivo que é aberto:
Your_USERNAME ALL=NOPASSWD: /sbin/shutdown
Em seguida, saia do editor e salve-o (CTRL + x).
Agora você pode usar o comando shutdown
na linha de comando ou no seu script sem senha.
O script seria assim:
while true
do
if ! on_ac_power; then #your system is not on AC-Power
notify-send "Main Power Lost!" "System is going down after 10 seconds"
sleep 10
sudo shutdown -h now # System is not on mains power
fi
sleep 300 # check main power status every 5 minutes
done
Links externos:
Como eu executo comandos sudo específicos sem um senha?
Como faço para reiniciar / desligar a partir de um terminal?