Cet article s’adresse aux connaisseurs de free-sa ayant utilisé les scripts de génération de rapport free-sa vus dans un article précédent.
Je propose un script qui envoie par mail automatiquement un fichier zip contenant les analyses du mois de tous vos servers Squid. C’est envoyé au format CSV et cela contient le topsites. Pratique pour savoir qui pompe le plus sur le réseau chaque mois et pouvoir backlister les sites en question 😉
Script d’envoi de rapport free-sa par mail
Ce script est a exécuter dans une tâche cron le premier du mois pour bien faire :
0 4 1 * * root /usr/local/sbin/send_csv_mail.sh >/dev/null
Lien de téléchargement du script : send-csv-mail.sh
#!/bin/bash # Auteur : Belgotux # Site : www.monlinux.net # Adresse : # Version : 1.0 # Date : 24/09/2014 # Description : extract data from free-sa analyses, all package in a zip file and send by mail # Required : free-sa-genere-report.sh servers_list="server1 server2 server3 server4" temp_dir="/tmp" log_root_directory="/var/www" #example topsite : /var/www/server1/01_08_14-31_08_14-1/topsites.html date_range=$(date +01_%m_%y-%d_%m_%y-1 -d -1day) #example date +01_%m_%y-%d_%m_%y-1 -d -1day : execute the cronjob the 1st month day month_date=$(date +"%m-%Y" -d -1day) first_month_date=$(date +01_%m_%y -d -1day) MAILTO="root" #Cronjob : # 0 4 1 * * root /usr/local/sbin/send_csv_mail.sh >/dev/null if [ ! -d $temp_dir/$(basename $0 .sh) ] ; then mkdir $temp_dir/$(basename $0 .sh) && echo "Create temp directory $temp_dir/$(basename $0 .sh)" || echo "Error creating temp directory $temp_dir/$(basename $0 .sh)" fi #generate the csv files for server in $servers_list ; do echo $server #sometime no trafic last day of month if [ -e "$log_root_directory/$server/$date_range/topsites.html" ] ; then topsites_file="$log_root_directory/$server/$date_range/topsites.html" else topsites_file="$(ls -1dR /var/www/bratislava/$first_month_date* | tail -n 1)/topsites.html" fi echo "No,URL,Requetes,Octets,Utilisateurs" > $temp_dir/$(basename $0 .sh)/$server.csv && cat $topsites_file | tail -n +22 | head -n -5 | sed -e 's/<tr><td>\([^<]*\)<td class=lt><a href="\([^"]*\)">\([^"]*\)<\/a><td>\([^<]*\)<td>\([^<]*\)<td class=lt>\([^<]*\).*/"\1","\2",\4,"\5","\6"/g' >> $temp_dir/$(basename $0 .sh)/$server.csv done # zip them to send by mutt mail if [ ! -x /usr/bin/zip ] ; then echo "Error zip program not installed!" 1>&2 exit 1 fi /usr/bin/zip -r $temp_dir/topsites_$month_date.zip $temp_dir/$(basename $0 .sh)/ #remove temp files rm -f $temp_dir/$(basename $0 .sh)/* # send mail echo "In attachment the reports for month $month_date" | /usr/bin/mutt -s "CSV report free-sa log analyses $month_date" -a $temp_dir/topsites_$month_date.zip -- $MAILTO exit $?
Topsites anonyme
Pour avoir le topsite de manière anonyme, voici le filtre sed à remplacer :
s/<tr><td>\([^<]*\)<td class=lt><a href="\([^"]*\)">\([^"]*\)<\/a><td>\([^<]*\)<td>\([^<]*\).*/"\1","\2",\4,"\5"/g'
Avec cela vous pouvez envoyer uniquement le top 100 anonyme des sites les plus consultés pour faire réagir pacifiquement les collègues un peu trop souvent sur le web 😉
Laisser un commentaire