Poco tempo fa ho deciso di creare un piccolo scrip in grado di interrogare un database, salvare temporaneamente in un file la risposta alla query ed inviare una notifica via email all’indirizzo di posta specificato. Nella fattispecie, tale scrip ha come scopo principale quello di notificare le scadenze da saldare e quelle non rispettate.
Ma bando alle ciance ed ecco lo scrip:
#!/bin/bash destinatario=vostro.indirizzo@email.it logfile=/var/log/notifier.log ROOT_UID=0 data=`date +%s` #lavoro con i timestamp per poter confrontare le date if [ "$UID" -ne "$ROOT_UID" ];then ERRORE1="Errore 1: Devi essere root per eseguire lo scrip" echo $ERRORE1 echo "$(date) $ERRORE1" >> $logfile exit 1 fi mysql -u root -ppassword -D nomedb -e "SELECT * FROM scadenza;" >> scadenze echo "Hai le seguenti scadenze da saldare: " > scadenze_imminenti; echo "Hai le seguenti scadenze non saldate: " > scadenze_nonrispettate; while read line do scad=`cat scadenze | grep - | awk '{print $2}'` #per individuare la data di scadenza. for info in $scad do datascad=`date --utc --date "$info" +%s` #uso i timestamp per confrontare le date if [ "$data" -le "$datascad" ];then if [[ $line =~ $info --;then echo $line >> scadenze_imminenti fi fi if [ "$data" -gt "$datascad" ];then if [[ $line =~ $info --;then echo $line >> scadenze_nonrispettate fi fi done done < scadenze if grep -q "-" scadenze_imminenti ;then uniq scadenze_imminenti | mail -iv -s "Scadenze da saldare" $destinatario; fi if grep -q "-" scadenze_nonrispettate ;then uniq scadenze_nonrispettate | mail -iv -s "Scadenze non saldate" $destinatario; fi rm scadenze rm scadenze_imminenti rm scadenze_nonrispettate exit 0
Come è facile notare, viene fatto un confronto tra la data corrente e quella di ciascuna scadenza (sottoforma di UNIX timestamp). Nel caso in cui la data corrente sia antecedente o uguale a quelle delle scadenze, esse verranno salvate nel file scadenze_imminenti, il cui contenuto verrà successivamente inserito nel corpo di una email e spedito al destinatario.
Invece, se la data attuale è maggiore di quella della scadenza, quest’ultima verrà salvata nel file scadenze_nonrispettate, il cui contenuto verrà recapitato nella casella email del destinatario.
Per qualsiasi chiarimento contattatemi.
Bye.