Avviso per mancanza corrente via e-mail con Linux
Vi è mai capitato che sia saltata la corrente mentre eravate in vacanza o comunque fuori casa per qualche giorno? Se la risposta è si sapete che non è una bella esperienza.
Per ovviare a questo problema l'ideale è montare un combinatore telefonico GSM che vi invii un SMS quando salta la corrente. Il problema è che questi aggeggi costano parecchio e allora chiediamo aiuto al nostro buon Linux.
E' sufficiente disporre di un PC portatile con Linux, una connessione ad internet e un piccolo gruppo di continuità a cui collegare il router per l'accesso ad internet (altrimenti se salta la corrente si spegne anche il router e addio connessione).
Innanzitutto bisogna assicurarsi che il proprio notebook possa inviare e-mail da linea di comando. Per farlo potete usare una di queste guide:
- mail da linea di comando usando un account Gmail)
- mail da linea di comando utilizzando il server SMTP del vostro provider)
Per capire se il notebook è alimentato da rete (e non dalla batteria) è possibile utilizzare il seguente comando:
cat /proc/acpi/ac_adapter/ACAD/state
l'esito può essere:
state: on-line
oppure
state: off-line
Quindi si fa uno script simile al seguente che potremmo chiamare CheckCorrente.sh.
#!/bin/bash
cnt=0
while [ $cnt -lt 3 ]
do
cat /proc/acpi/ac_adapter/ACAD/state > acpi.txt
while read line
do
case $line in
*"off-line"*)
echo "Il PC non è più alimentato, si presume sia saltata la corrente. INTERVENIRE !!!!" | mail -s "ATTENZIONE: MANCA CORRENTE A CASA" miamail@gmail.com
cnt=$(($cnt+1))
echo $cnt;
;;
esac
done < "acpi.txt"
sleep 5 # ritardo di 5 secondi
done
shutdown -h 0
Ovviamente va sostituito l'indirizzo e-mail miamail@gmail.com con il vostro indirizzo o quello del parente o vicino a cui affidate il compito di ripristinare la corrente
Lo script non fa altro che testare ogni 5 secondi lo stato dell'alimentazione da rete (il tempo potete impostarlo diversamente modificando il valore del comano sleep). Quando lo stato diventa off-line viene inviata una mail di avviso.
Dopo tre e-mail esce dal loop e spegne il notebook.
Quando volete che il notebook inizi a monitorare lo stato dell'alimentazione, ad esempio quando andate in vacanza, è sufficiente eseguire lo script da Terminale dando il seguente comando:
sudo /bin/sh CheckCorrente.sh
va utilizzato sudo perchè è necessario essere root per spegnere il PC con il comando shutdown.
Ed ora via, si parte per le vacanzeee 😀
Accidenti, quasi dimenticavo: ovviamente il router per la connessione ad internet deve essere sotto gruppo di continuità altrimenti la mail non esce 😉