Script Bash Daily RePort pour serveur Debian+DTC
D.S.R. est un script on ne peut plus simple vous permettant de recevoir quotidiennement un email contenant quelques informations sur votre serveur. Comme les mises à jour en retard, quelques graphs de charge et résultat de scans.
D.S.R. is a very simple script let you receve a daily mail with some informations about your server. Like missed updates, some load graphs and scan results.
Daily Report Script est prévu pour fonctionner sur un serveur Web Debian avec DTC.
Ce script est testé, à l'heure ou j'écris, avec Debian Squeeze et DTC 0.32.11.R1
Daily Report Script is writed to work on a Debian Web server running DTC.
This one is tested, when i'm writing this, with Debian Squeeze and DTC 0.32.11.R1
Version up to date: 1.1.1
Rien de bien extraordinaire, mais assez pratique en soit.
Nothing extraordinary but very useful.
Fonctionnement de D.S.R :
How does D.S.R. is working:
Le script permet quelques réglages et peut inclures les quelques rapports suivants:
The script let you make some settings and can inclure the following reports:

Vous obtenez un email formaté comme vu sur l'image de droite.
you'll have an email like the right picture.
Par défaut:
By default:
- Votre taux d'occupation disque de chaque partitions. (Disk usage)
- Vos mise à jour système en retard, ou la confirmation d'être up to date. (missed updates or up to date confirmation)
- Le graphique des 24 dernières heures de la moyenne de charge du CPU (last 24h cpu load graph)
- Le graphique des 24 dernières heures des statistiques mails (last 24hemail statistics)
- Le graphique des 24 dernières heures de votre consommation de RAM et SWAP (last 24h swap and ram usage)
- Le graphique des 24 dernières heures du trafic http(s) (last 24htraafic charge on http(s) protocol)
En option:
Options:
- Le rapport de l'espace disque occupé par les mails de chaque domaine. (the report of each domain's mailboxs hard drive usage)
- Le rapport de backup (report of) de DTC
- Le rapport de (report of) logwatch
- Le rapport de (report of) rkhunter
- Le rapport de (report of) chkrootkit
- Le rapport de (report of) Lynis
- Le rapport des règles (the lasts ules of) IPtables de fail2ban
Le résultat vous est envoyé par mail au format html.
The result is send to you by mail in html.
vu la taille des logs que peuvent atteindre les scans type logwatch ou rootkit le script cré un résumé sur votre mail. Il vous fournit un lien pour consulter la version complète de chaque rapport. Ce lien pointe vers un dossier dont vous définissez l'emplacement et qui est automatiquement protégé par un htpaccess. Les identifiants et mots de passe sont générés aléatoirement et changent chaque jour. Ils sont contenus dans les liens du mail.
According to the wieght witch the scan result of logwatch and some rootkits could have, the script is creating a summary in your mail. It give you a link to see the full file of each report. This link is going on a folder witch you choose the location protected by htaccess. The ID and password are randomly generated and change each day. They'e include in the mail's link.
Les graphs sont quand à eux inclus dans le mail, ainsi que l'intégralité des rapports par défaut.
The graphs are include in the mail, like the entire default report.
Le fonctionnement est on ne peut plus simple, et ne cosomme que très peu de ressources, pendant un laps de temps relativement court. En effet D.S.R. se contente de récupérer et traiter les logs écrits par d'autres applications. Les traitements en question ne sont que des mise en formes basique pour un affichage html de ceux-ci.
The principe of DSR is very simple, it taking a very little machine power, and for a very small time. Infact D.S.R. is just keeping the diffeent log files writed by other softwares. The computing of their files is very basic, it's just some html arrangement to dysplay the logs correctly.
Les seules parties ne provenant pas de logs sont les graphiques, pris dans les bases de données rrdtool et l'estimation du poids des mails, qui n'est qu'une simple boucle sur une série de dossiers.
The only parts witch are not caming from log are the graphs, taked from rrdtool database, and the weight estate of the disc space used by he mailboxs, witch is a simple loop on some folders.
Les options:
Les options sont paramétrables en fonctions de vos installations des applicatifs en rapport sur votre machine. Vous pouvez ou non inclure les rapports dans le mail.
The options are seted depending your software installations and your needs with your machine. You can include or not the reports in the mail.
La config est relativement simple et entièrement détaillée dans la doc détaillée: (very simple config and completly detailled in the doc)
# !!!!!!!! Read the doc (very short but usefull) before please !!!!!!!!!!!
#
#Doc in the READ_ME file for explaination (Doc dans le fichier LISEZ_MOI)
#
#EFFECTUEZ VOS REGLAGES / DO YOUR SETTINGS
#
RUN_DAILY="true"
#language
Z_DAIL_I18="fr_FR"
#mail
DEST_MAIL='YOUR_RECIPIENT_MAIL'
#stock folder
GRAPHS_FOLD='tempgraphreport'
#Base path
SITES_BASE='/var'
#Stock folder
WWWDIR="$SITES_BASE/www/sites/DTC_LOGIN/MY_DOMAIN/subdomains/MY_SUB_DOMAIN/html/$GRAPHS_FOLD"
#Web access
WEBDIR="http://www.mondomaine.com/$GRAPHS_FOLD"
#Log stock proccessed folder
BKP_LOG="bkp_log"
#Backup option
RUN_BACK_UP="false"
#Mail weight option
MAILS_CPT="true"
#LOGWATCH option
LGWATCH="false"
#logwatch log
LOG_W_DIR="/tmp"
#Processed file folder
LOG_W_OUT="/var/log"
#RKHUNTER option
RKH="false"
#rkhunter log
RKHDIR="/var/log"
#LYNIS option
LYNIS_RUN="false"
#Lynis log
LYNISDIR="/var/log"
#CHKROOTKIT option
CHKROOT="false"
#diff mod ?
CHKDIFF="false"
#chkrootkit log
CHKDIR="/var/log"
#Répertoire par défaut des logs (en général /var/log)
LOGS_FOLD="/var/log"
#Fail2ban option
FTOB="false"
#Fail2ban log
FTBFIL="/var/log"
#DTC sbox option
SBDTC="true"
# sbox user ?
SBUSR="dtc"
# sbox group ?
SBGRP="dtcgrp"
#END CONF
Sur cet example, vous avez les réglages par défaut, ne considérant que l'activation du minimum..
On this exemple you have the minimum default setting, with the minimum options activated.
Pré-requis:
Prerequisites:
- Avoir un serveur dédié iinstallé avec Debian 5 (lenny) (have a debian lenny root server)
- Faire tourner DTC de GplHost comme gestionnaire d'hébergement (v. 0.32.x ou ultérieur) (Running DTC 0.32.x or newer on the machine)
- Avoir des droits root sur le serveur en question (have root rights on the server)
Mise en oeuvre:
Implementation:
On ne peut plus simple, il vous suffit de: (very simple, you just have to:)
- Télécharger l'archive (download the folder)
- Le paramétrer le fichier z_dailyreport.conf selon vos besoins, vos identifiants et noms de domaine (set the z_dailyreport.conf script according your server setting, user name and domain name)
- Uploadez le fichier (uploade the file) z_dailyreport dans le repertoire (in hte folder) /etc/cron.daily/ en effet il faut que le script s'exécute en dernier. De plus, si le nom est différent le mail ne partira pas. (this script have to be launched in last, and in an other way, if the name is different the mail wont be send)
- Copier les autres fichiers de l'archive suivant l'arborescence suivante: (copy all the other files respecting the following model:)
- /etc/cron.daily/z_dailyreport
- /etc/z_dailyreport/z_daily_check_conf
- /etc/z_dailyreport/z_dailyreport.conf
- /etc/z_dailyreport/i18n/z_i18_en
- /etc/z_dailyreport/i18n/z_i18_fr
- Effectuer un chmod +x sur les fichiers (do a chmod +x on the files) /etc/z_dailyreport/z_daily_check_conf et (and) /etc/z_dailyreport/z_daily_check_conf
- Afin que DTC inscrive le log du backup dans un fichier il faut modifier le fichier (to let DTC write the backup output in a file you have to modify the file) /usr/share/dtc/admin/cron.php.
- Trouver la ligne (find):
system("$conf_generated_file_path/net_backup.sh &");
- Remplacez par (replace by):
system("touch /var/log/net_backup.log");
system("chown dtc.dtcgrp /var/log/net_backup.log");
system("$conf_generated_file_path/net_backup.sh >> /var/log/net_backup.log 2>&1 &");
the last line should finish by 2>&1 &"); be carefull if the web site replace & by &
concernant le paramétrage, aussi simple soit-il, tout est commenté à outrance.
About the setting, as simple as it is, all is very dettailled.
Reportez vous à la doc pour les modifications des fichiers pour inclure les logs de logwatch et chkrootkit
Check the documentation to know what to do on logwatch and chkrootkit to include the logs in the mail.
Cron pour lynis à ajouter dans (lynis cron to add in) /etc/cron.daily
#!/bin/sh -e
LYNISPLACE=/usr/sbin/lynis
if [ ! -x $LYNISPLACE ]; then
exit 0
fi
DEPART=`pwd`
cd /usr/sbin/
./lynis -c --auditor "automated" --cronjob
cd $DEPART
Vérification: (checking)
Vous pouvez vérifier votre installation de D.S.R. en exécutant le fichier /etc/z_dailyreport/z_daily_check_conf.
You can check your install by launching the file /etc/z_dailyreport/z_daily_check_conf.
Mise à jour:
Upgrade:
depuis le (from) version 1.1.0:
Remplacez les fichiers de l'archive suivants:
(replace the following files :)
- /etc/cron.daily/z_dailyreport
- /etc/z_dailyreport/z_daily_check_conf
- /etc/z_dailyreport/i18n/z_i18_en
- /etc/z_dailyreport/i18n/z_i18_fr
Effectuer un chmod +x sur les fichiers (do a chmod +x on the files) /etc/z_dailyreport/z_daily_check_conf et (and) /etc/z_dailyreport/z_daily_check_conf
Vous pouvez vérifier votre installation de D.S.R. en exécutant le fichier /etc/z_dailyreport/z_daily_check_conf.
You can check your install by launching the file /etc/z_dailyreport/z_daily_check_conf.
depuis la (from) version 1.0.8 - 1.0.9 :
Télécharger votre fichier /etc/cron.daily/z_dailyreport puis supprimez le de votre serveur.
Download your file /etc/cron.daily/z_dailyreportand delete it from the server
Reporter la configuration de votre fichier téléchargé dans le fichier z_dailyreport.conf
Report the config of your downloaded file in the file z_dailyreport.conf
Copier les autres fichiers de l'archive suivant l'arborescence suivante:
(copy all the other files respecting the following model:)
- /etc/cron.daily/z_dailyreport
- /etc/z_dailyreport/z_daily_check_conf
- /etc/z_dailyreport/z_dailyreport.conf
- /etc/z_dailyreport/i18n/z_i18_en
- /etc/z_dailyreport/i18n/z_i18_fr
Effectuer un chmod +x sur les fichiers (do a chmod +x on the files) /etc/z_dailyreport/z_daily_check_conf et (and) /etc/z_dailyreport/z_daily_check_conf
Vous pouvez vérifier votre installation de D.S.R. en exécutant le fichier /etc/z_dailyreport/z_daily_check_conf.
You can check your install by launching the file /etc/z_dailyreport/z_daily_check_conf.
depuis la (from) version 1.0.7 :
Le nom de variable à été changé dans le fichier /etc/cron.daily/chkrootkit !!!! (the var name was changed in the file chkrootkit)
Elle passe de LOG_DAYLI_REP à LOG_DAILY_REP !!
(it pass from LOG_DAYLI_REP to LOG_DAILY_REP)et si vous n'avez PAS activer le mod différentiel:
(if you had'nt actived the diff mod)modifiez également
(modify also) /etc/cron.daily/chkrootkit pour écrire le résultat dans un fichier log.
ajouter
(add) LOG_DAILY_REP=/var/log sur une nouvelle ligne après
(on a new line after) LOG_DIR=/var/cache/chkrootkit
cherchez
(find) $CHKROOTKIT $RUN_DAILY_OPTS à la fin du fichier et remplacer par
(at the end of the file and replace by):
$CHKROOTKIT $RUN_DAILY_OPTS > $LOG_DAILY_REP/chkrootkit 2>&1
Supprimez le fichier si il existe
(remove the file if exist):
/etc/logrotate.d/dtc_net_backup
corrigez le fichier
(correct the file) /usr/share/dtc/admin/cron.php :
Cherchez
(find):
system("$conf_generated_file_path/net_backup.sh
Mofiez pour obtenir
(modify to obtain):
system("touch /var/log/net_backup.log");
system("chown dtc:dtcgrp /var/log/net_backup.log");
system("$conf_generated_file_path/net_backup.sh >> /var/log/net_backup.log 2>&1 &");
!! attention le site transforme la fin de la dernière lige ce doit être: 2>&1 &");
!! be carefull the website transform the last line it must be: 2>1 &");
Remarques:
Ce script est écrit à la volée selon mes besoins et est loin d'être optimisé, il vous est fourit sans aucune garantie. Bien que celui-ci ne puisse nuire à votre serveur.
This script was writed according of my nedds, it's far than optimized, and give you without any warranty.
Script under GPLv3 license.
Si vous optimisez celui-ci, je serait heureux de mettre le script à jour.
If you optimise or modify this script i'll be happy to up to date this one.
A chauqe upgrade de DTC, il se peut que le fichier /usr/share/dtc/admin/cron.php soit remis en sont état d'origine. Il vous faudra peut être ré-effectuer la modification.
At each upgrade of DTC, could arrive that the file /usr/share/dtc/admin/cron.php is rezeted. You'll have in this case to make again the modification.
A venir:
In comming:
- Insertion des tailles de dossiers mail par compte (inserting mail folder size)
Internationalisation du script pour permettre les fichiers linguitiques en include (multilinguage file to let insert other languages file in include)
- Insertion du log de backup auto inclu dans DTC (inserting backup log of DTC) fait en (done in) version 1.0.1
- Exporter la config en base de données (export the conf in database)
- Création d'un gestion web complète, vérification incluse (create a web admin, checking include)
- Ajout de possibilité de configuration automatique (add the auto config possibility)
- Inclusion de la gestion web dans le panel de DTC. (include the web admin in DTC panel)
Bugs connus:
known bugs:
- Information de backup non récupérées, correction de gen_backup_script.php de DTC en cours (backup log don't kepped, correction of DTC in progress)
- Modification du lancement cron du script de backup et logrotate du log / Modified cron launcher of backup and log file logrotate
Historique de version:
Version history:
- 1.0.1 Ajout du log de backup (add backup log)
- 1.0.2 Correction d'une coquille sur variable (typo on a var name corrected)
- 1.0.2 Format FR et EN de la date corrigé (Date format locate for FR and EN)
- 1.0.2 test de la récupération du log de backup avec gen_backup_script_modifié (test on backup log keeping with gen_backup_script modified)
- 1.0.3 caractère manquant (typo mised)
- 1.0.4 Ajout de séquences de test de fichier vide (add of empty file test line)
- 1.0.5 ajout de l'stimation de l'espace disque des dossiers mail par domaine (add of space of mailboxs of each domain)
- 1.0.5 mise en forme de base des fichiers html (basic arrangement of html files)
- 1.0.6 ajout de la récupération du log de backup (add net backup log keeping)
- 1.0.6 typo on SITEBASE variable (Typo on var SITEBASE)
- 1.0.7 ajout de multiples séquences de tests pour éviter les erreurs en cas de mauvaise config. (Many test sequecies added to avoid config error)
- 1.0.8 correction d'une coquille et diverses instructions sed mises en commentaire. (correct typo and some sed sentencies commented)
- 1.0.8 log géré via le script supression du logrotate qui tournait trop tôt. (Log managed by the script removing of logrotate witch turn too early)
- 1.0.9 Correction de bugs (bugs corrected)
- 1.1.0 Ajout des fichiers de langue séparés, pour le moment FR et EN (adding separate language files, only FR and EN for the moment)
- 1.1.0 Séparation de la configuration pour simplifier les mises à jour (config separation to simplify update)
- 1.1.0 Ajout du script de vérification de la configuration (checking config script added)
- 1.1.0 Ajout de la vérification de dernière version en pied de page du mail (add the last realse version checking in the footer of the mail)
- 1.1.1 Modification shell pour enlever les fonctions bash non déclarées incompatible avec dash (removing undeclared bash functions not dash compliant)
Téléchargement:
Download:
→ Citer cet article sur votre site ←Pour créer un lien vers cet article sur votre site,
copiez et collez le texte ci-dessous dans votre page.Prévisualisation :