Script bash per l'invio di notifiche tramite email

Creato il 30 maggio 2011 da Nightfly

Poco tempo fa ho deciso di creare un piccolo script 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 script ha come scopo principale quello di notificare le scadenze da saldare e quelle non rispettate.

Ma bando alle ciance ed ecco lo script:

#!/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 script"
   echo $ERRORE1
   echo "$(date) $ERRORE1" >> $logfile

   exit 1

fi

echo "Hai le seguenti scadenze da saldare:" > scadenze

mysql -u root -ppassword -D nomedb -e "SELECT * FROM scadenza;" >> scadenze

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

   echo $line >> scadenze_imminenti

   fi

   if [ "$data" -gt "$datascad" ];then

   echo $line >> scadenze_nonrispettate
   fi

   done

done < scadenze

if grep -q "-" scadenze_imminenti ;then

scadenze_imm=`cat scadenze_imminenti | awk '!x[$0]++'` #rimuovo le righe duplicate

echo -e "n$scadenze_imm" | mail -iv -s "Scadenze da saldare" $destinatario;

fi

if grep -q "-" scadenze_nonrispettate ;then

cat 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.


Potrebbero interessarti anche :

Possono interessarti anche questi articoli :