#!/bin/bash ### Parametri da modificare ### roothttp="/PERCORSO/ALLA/ROOT/HTTP" # Percorso alla root http (es. /var/www/mysite) installdir="/DIR/DI/INSTALLAZIONE/" # Percorso della directory in cui # viene installato il file (es. /usr/local/cpuload) highlimit="3" # Limite alto sopra il quale il sistema manda una mail di alert lowlimit="1" # Limite basso sotto il quale il sistema e' tornato normale indirizzoemail="VOSTROINDIRIZZOEMAIL" # Indirizzo a cui mandare le comunicazioni ### Fine parametri da modificare ### infofile="/$roothttp/cpuload/loadinfo.`date +%d-%m-%Y`.txt" # Questo file, disponibile in http, conterra' lo stato completo per diagnosticare il problema temp="/$installdir/tmp/mailinfo" # Questo file immagazzinera' # l'output formattato quando il carico e' alto loadreply="/$installdir/tmp/loadreply" # Questo file # immagazzinera' l'output formattato quando il carico medio e' # tornato normale srvrnm=`hostname` # ricava l'hostname del server cur=`uptime | awk '{print $(NF-2)}' | tr -d , | cut -d. -f1` # Ricava il carico # corrente del server if [ $cur -ge #highlimit ]; then #################### Formattazione statistiche di carico alto ############### echo " " >> $infofile echo " " >> $infofile echo " " >> $infofile echo "_____________________________________________________________________________________________________" >> $infofile echo "Media di carico alto di `date`, allegate le informazioni dettagliate:" >> $infofile echo "_____________________________________________________________________________________________________" >> $infofile echo " " >> $infofile echo " " >> $infofile echo "--------------------" >> $infofile echo "| Stato di uptime: |" >> $infofile echo "--------------------" >> $infofile /usr/bin/uptime >> $infofile ##### Aggiunge l'uptime echo " " >> $infofile echo "--------------------------------------------" >> $infofile echo "| 20 processi a carico maggiore sulla CPU: |" >> $infofile echo "--------------------------------------------" >> $infofile ps aux | head -1 >> $infofile #ps aux | sort -rn +2 | head -20 >> $infofile ps aux --no-headers | sort -rn +2 | head -20 >> $infofile # 20 processi con carico maggiore sulla CPU echo " " >> $infofile echo "---------------------------------------" >> $infofile echo "| 10 processi che usano piu' memoria: |" >> $infofile echo "---------------------------------------" >> $infofile ps aux | head -1 >> $infofile ps aux --no-headers| sort -rn +3 | head >> $infofile # 10 processi che consumano piu' memoria echo " " >> $infofile echo "-------------------------" >> $infofile echo "| Stato memoria e swap: |" >> $infofile echo "-------------------------" >> $infofile /usr/bin/free -m >> $infofile ###### Stato della memoria echo " " >> $infofile echo "-------------------------------" >> $infofile echo "| Connessioni di rete attive: |" >> $infofile echo "-------------------------------" >> $infofile /bin/netstat -tnup | grep ESTA >> $infofile # Tutte le connessioni di rete # attive echo " " >> $infofile echo "-----------------" >> $infofile echo "| Spazio disco: |" >> $infofile echo "-----------------" >> $infofile /bin/df -h >> $infofile # informazioni sullo spazio disco echo " " >> $infofile echo "______________________________________________________________________________________________" >> $infofile echo " " >> $infofile ################################################################### ################### Formazione dell'email di output ########################## echo "Salve," > $temp echo " " >> $temp echo " " >> $temp echo "Il server `hostname` e' sovraccarico." >> $temp echo " " >> $temp echo "Trovate lo stato del server `hostname` usando questo URL: http://$srvrnm/cpuload/loadinfo.`date +%d-%m-%Y`.txt" >> $temp echo " " >> $temp echo " " >> $temp echo "grazie," >> $temp echo " " >> $temp echo "- Linux SysAdmin." >> $temp ###################################################### mail -s "Alert: Server sovraccarico `hostname`" $indirizzoemail < $temp echo "yes" > $loadreply ## Modifica il valore nel file loadreply # per inviare la mail quando il problema e' risolto fi #### Condizione per inviare l'email quando il problema e' risolto ###### if [ `cat $loadreply` = 'yes' ] && [ $cur -le $lowlimit ]; then ################### Formazione dell'email ########################## echo " " > $temp echo "Salve," >> $temp echo " " >> $temp echo "Il server `hostname` era sovraccarico ed e' tornato normale" >> $temp echo "Il carico attuale del server e':" >> $temp echo " " >> $temp echo " " >> $temp echo "`uptime`" >> $temp echo " " >> $temp echo "Grazie," >> $temp echo " " >> $temp echo "- Linux Sysadmin." >> $temp ###################################################### mail -s "Attenzione: carico del server `hostname` sotto controllo" $indirizzoemail < $temp echo "no" > $loadreply # cambia il valore nel file quando il problema e' risolto fi ############## Fine #########