{"id":245,"date":"2010-06-18T19:45:33","date_gmt":"2010-06-18T17:45:33","guid":{"rendered":"http:\/\/smolensk.homelinux.org\/?p=245"},"modified":"2017-04-03T21:05:54","modified_gmt":"2017-04-03T19:05:54","slug":"scripts-de-surveillances","status":"publish","type":"post","link":"https:\/\/2d6.fr\/?p=245","title":{"rendered":"scripts de surveillances"},"content":{"rendered":"<p>Il s&rsquo;agit de surveiller certains param\u00e8tres du serveur\/poste de travail via des scripts. Ceux ci pourront envoyer des mails d&rsquo;alertes, et pourront \u00eatre planifi\u00e9s \u00e0 intervalles r\u00e9guliers (une fois \/ jour par exemple). Ces scripts sont des id\u00e9es de base \u00e0 modifier selon les circonstances. (cel\u00e0 me sert \u00e9galement de pense b\u00eate pour \u00e9viter de r\u00e9inventer la roue \u00e0 chaque install.. \ud83d\ude09 )<\/p>\n<h4>Espace disque disponible<\/h4>\n<p>Ce script va surveiller l&rsquo;espace disque disponible dans chaque partition, et remontera une alerte si on d\u00e9passe le seuil.<br \/>\nIl va\u00e9galement\u00a0 cr\u00e9er un fichier de log dans \/var\/log.<\/p>\n<pre>#!\/bin\/bash\r\n# script surveillances (espaces disques ..)\r\n# et envoi alertes par mail\r\n# maj :\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ronan le 13\/8\/09\r\n#\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 (editer nailrc et ajouter smtp=)\r\nnow=$(date +%a-%d-%b--%HH%M)\r\njour=$(date +%d)\r\ndestinataire=\"adresse@fai.fr\"\r\n# % espace disque occup\u00e9 sur partitions locales :\r\n#df -hl | awk '{ print $5 }'|grep %|cut -d% -f 1\r\ndf -k | grep \/dev | while read FS\r\ndo\r\nFS_NAME=`echo $FS | awk -F' ' '{print $6}'`\r\nFS_SIZE=`echo $FS | awk -F' ' '{print $5}'|cut -d% -f1`\r\nif [ $FS_SIZE -gt 95 ]; then\r\necho \"NOM - $now\u00a0 serveur nom_serveur : partition $FS_NAME utilise ${FS_SIZE}% !\" &gt; \/var\/log\/espace-disque-$jour.log\r\necho \".\" &gt;&gt; \/var\/log\/espace-disque-$jour.log\r\n#cat \/var\/log\/espace-disque-$jour.log | nail -s \"alerte--serveur\" -r ronan@DOMAIN $destinataire\r\nmail -s \"alerte-nom_serveur\"\u00a0 $destinataire &lt; \/var\/log\/espace-disque-$jour.log\r\nfi\r\ndone\r\n<\/pre>\n<h4>Autre version pour l&rsquo;espace disque :<\/h4>\n<p>(requiert le paquet \u00ab\u00a0nail\u00a0\u00bb)<\/p>\n<pre>#!\/bin\/bash\r\n# script surveillances (espaces disques ..)\r\n# et envoi alertes par mail ou nail\r\n# maj :\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ronan le 15\/2\/11\r\n#\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 (editer nailrc et ajouter smtp=   ou indiquer serveur smtp dans nail\r\nnow=$(date +%a-%d-%b--%HH%M)\r\njour=$(date +%d)\r\ndestinataire=\"destinataire@domaine.com\"\r\nsujet=\"mail automatique : Serveur passerelle : espace disque\"\r\nserveur=126.0.0.13\r\nexpediteur=\"expediteur@domaine-local.fr\"\r\n\r\n# % espace disque occup\u00e9 sur partitions locales :\r\n#df -hl | awk '{ print $5 }'|grep %|cut -d% -f 1\r\ndf -k | grep \/dev | while read FS\r\ndo\r\nFS_NAME=`echo $FS | awk -F' ' '{print $6}'`\r\nFS_SIZE=`echo $FS | awk -F' ' '{print $5}'|cut -d% -f1`\r\nif [ $FS_SIZE -gt 95 ]; then\r\necho \"NOM - $now\u00a0 serveur nom_serveur : partition $FS_NAME utilise ${FS_SIZE}% !\" &gt; \/var\/log\/espace-disque-$jour.log\r\n\r\n echo \".\" &gt;&gt; \/var\/log\/espace-disque-$jour.log\r\n #cat \/var\/log\/espace-disque-$jour.log | nail -s \"alerte--serveur\" -r ronan@DOMAIN $destinataire\r\n# mail -s \"alerte-nom_serveur\"\u00a0 $destinataire &lt; \/var\/log\/espace-disque-$jour.log\r\n#exemple de commande : nail -s \"$sujet\" -S smtp=$serveur -r \"$expediteur\" -a \"$piecejointe\" $destinataire &lt; \/tmp\/$now.txt\r\nnail -s \"$sujet\" -S smtp=$serveur -r \"$expediteur\"\u00a0 $destinataire &lt; \/var\/log\/espace-disque-$jour.log\r\n\r\nfi\r\ndone\r\n<\/pre>\n<h4>Surveillance Charge machine<\/h4>\n<p>Il s&rsquo;agit ici de surveiller la charge machine, et d&rsquo;envoyer une alerte si elle persiste trop longtemps. Il est \u00e0 planifier toutes les heures. (<em>mise \u00e0 jour 28nov : swap dispo<\/em>)<\/p>\n<pre>#!\/bin\/bash\r\n# surveillance charge machine\r\n# uptime |cut -d' ' -f 12 |cut -d',' -f 1\r\nseuil=2\r\nnow=$(date +%a-%d-%b--%HH%M)\r\njour=$(date +%d)\r\ndestinataire=\"adresse@fai.fr\"\r\nswapmini=100000\r\ncharge=$(uptime |cut -d' ' -f 12 |cut -d',' -f 1 |cut -d'.' -f 1)\r\ncharge2=$(uptime |cut -d' ' -f 12 |cut -d',' -f 1)\r\ncomptage=\"\/tmp\/charge.comptage.log\"\r\n# fichier \/tmp\/charge.comptage.log comptablise alertes consecutives\r\n# si trop nombreuses (nb lignes) on pourra s'en servir pour shooter certains services..\r\n#charge=3 # debugage\r\n# logguer l'etat pour un suivi\r\nuptime &gt;&gt; \/var\/log\/charge-machine-suivi-$jour.log\r\n# tester\r\nif [ $charge -gt $seuil ]; then\r\necho \"Nom - $now serveur nom_serveur: charge $charge2 trop forte &gt; $seuil\" &gt; \/var\/log\/charge-machine-$jour.log\r\necho $now &gt;&gt; $comptage\r\nnbAlertes=$(cat $comptage |wc -l)\r\nif [ $nbAlertes -gt 1 ]; then\r\necho \"nb alertes consecutives : $nbAlertes\" &gt;&gt; \/var\/log\/charge-machine-$jour.log\r\nfi\r\necho \".\" &gt;&gt; \/var\/log\/charge-machine-$jour.log\r\nmail -s \"Alerte-charge-Nom_Serveur\"\u00a0 $destinataire &lt; \/var\/log\/charge-machine-$jour.log\r\nelse\r\nif [ -e $comptage ]; then\r\necho \"retour normale $now\" &gt;&gt; \/var\/log\/charge-machine-$jour.log\r\nrm \/tmp\/charge.comptage.log\r\n# envoyer mail retour normale\r\necho \"Nom : retour normale - $now serveur nom_serveur: charge $charge2\" &gt; \/tmp\/mail.txt\r\necho \".\" &gt;&gt; \/tmp\/mail.txt\r\nmail -s \"retour-normale-charge-Nom_Serveur\"\u00a0 $destinataire &lt; \/tmp\/mail.txt\r\nrm \/tmp\/mail.txt\r\nfi\r\nfi\r\n# surveillance SwapFree\r\nSwapTotal=$(sed -n '\/SwapTotal\/{s\/[^0-9]*\/\/g;p}' \/proc\/meminfo)\r\nSwapDispo=$(sed -n '\/SwapFree\/{s\/[^0-9]*\/\/g;p}' \/proc\/meminfo)\r\n#echo \"SwapFree = $MEM\"\r\nif [ $SwapDispo -lt $swapmini ]; then\r\n echo \"monNom - $now serveur : swap $SwapDispo\/$SwapTotal &lt; $swapmini !\" &gt; \/var\/log\/charge-machine-swap-$jour.log\r\n mail -s \"Alerte-Swap-serveur\"\u00a0 $destinataire &lt; \/var\/log\/charge-machine-swap-$jour.log\r\nfi\r\n<\/pre>\n<h4>Un script de sauvegarde d&rsquo;une machine du r\u00e9seau<\/h4>\n<p>Un serveur win en 192.168.0.1 a un dossier dans lequel il g\u00e9n\u00e8re une sauvegarde (ou tout autre fichier(s) ) que l&rsquo;on souhaite archiver sur le linux. Il existe un dossier (vide) sur le linux <i>\/mnt\/windows<\/i> pour monter le partage r\u00e9seau.<\/p>\n<pre>\r\n#!\/bin\/bash\r\n# script copie fichier sur le reseau, archivage et log\r\n#ronan le 31\/12\/10\r\n#\r\ndossier=\"\/home\/toto\/sauveg.win\/etat.system\"     # dossier sur linux\r\nsourcewin=\"sauveg.systeme\"                      # dossier sur windows\r\nfichier=\"sauveg.system.state.bkf\"               # nom fichier\r\nipserveurwin=\"192.168.0.1\"                        # ip serveur win\r\npartagewin=\"C$\"                                      # nom partage sur le win\r\nloginwin=\"administrateur\"          # nom login sur le win\r\npassewin=\"12345678\"              # mot de passe sur le win\r\nnow=$(date +%F)                                 #date aujourd'hui\r\nmois=$(date +%m)                                #numero mois\r\nannee=$(date +%Y)                               #numero annee\r\nanneePrec=$(date +%Y)                           #numero annee precedente\r\n        let \"anneePrec -= 1\"\r\nfichierLog=\"\/home\/toto\/sauvegarde.syst.$mois-$annee.log\" # fichier log\r\n#\r\n#supprimer fichier log de l'annee precedente\r\n\/bin\/rm -f \/home\/toto\/sauvegarde.syst.$mois-$anneePrec.log\r\n#\r\n# logguer debut action\r\necho \"debut copie system state\" >> $fichierLog\r\ndate >> $fichierLog\r\n#\r\n#renommer ancien fichier sauvegarde\r\nmv $dossier\/$fichier $dossier\/$fichier.$now\r\n#\r\n# montage\r\nmount -t cifs -o username=$loginwin,password=$passewin \/\/$ipserveurwin\/$partagewin \/mnt\/windows\/\r\n#\r\n#copie :\r\n#    si le fichier existe sur le win :\r\nif test -f \/mnt\/windows\/$sourcewin\/$fichier; then\r\n        cp \/mnt\/windows\/$sourcewin\/$fichier $dossier\/\r\n        #echo \" * OK fichier $fichier existe dans $dossier\"\r\nelse\r\n        echo \" *** ERREUR fichier source $fichier inaccessible dans $dossier !\"\r\n        echo \"---\" >> $fichierLog\r\n        echo \" *** ERREUR fichier source $fichier inaccessible dans $dossier !\" >> $fichierLog\r\n        echo \"---\" >> $fichierLog\r\nfi\r\n#\r\n#demontage\r\numount \/mnt\/windows\r\n#\r\n#droits\r\nchown toto.users $fichierLog\r\nchown toto.users $dossier\/$fichier\r\n#\r\n#fin\r\ndate >> $fichierLog\r\necho \"---\" >> $fichierLog\r\n<\/pre>\n<h4>Archiver un fichier d&rsquo;un dossier et conserver un historique sur 5 jours de le semaine.<\/h4>\n<p>\u00c0 coupler avec le script ci dessus (sauvegarde machine r\u00e9seau) qui g\u00e8re le fichier de log (suppression du log ancien.) On aurait pu mettre ces logs dans \/var\/log\/ mais dans mon besoin l&rsquo;utilisateur \u00ab\u00a0toto\u00a0\u00bb devait pouvoir les consulter directement.<\/p>\n<pre>\r\n#!\/bin\/bash\r\n#ronan le 31\/12\/10\r\n# archive le .tar des donnees\r\n#    --> avec historisation sur une semaine\r\n\r\nfichier=\"sauveg.donnees.tar\"            #nom fichier\r\ndossier=\"\/home\/toto\/sauveg\/donnees\" #emplacement sauvegarde\r\nnow=$(date +%u)                         #numero du jour dans la semaine\r\nmois=$(date +%m)                        # numero mois\r\nannee=$(date +%Y)                       # annee\r\nfichierLog=\"\/home\/toto\/sauvegarde.syst.$mois-$annee.log\" # fichier log\r\n\r\n#si fichier existe :\r\nif test -f $dossier\/$fichier; then\r\n        #archiver fichier\r\n        echo \"-- archivage donnees $fichier dans $fichier.$now\" >> $fichierLog\r\n        \/bin\/mv -f $dossier\/$fichier $dossier\/$fichier.$now\r\n        date >> $fichierLog\r\nelse\r\n        echo \" *** ERREUR fichier $fichier illisible dans $dossier !\"\r\n        echo \" ***\" >> $fichierLog\r\n        echo \" *** ERREUR fichier $fichier illisible dans $dossier !\" >> $fichierLog\r\n        date >> $fichierLog\r\nfi\r\n<\/pre>\n<h4>et voil\u00e0 !<\/h4>\n","protected":false},"excerpt":{"rendered":"<p><img src=http:\/\/2d6.fr\/acw\/linux20.png>Scripts pour surveiller espace disque, charge machine &#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[97],"class_list":["post-245","post","type-post","status-publish","format-standard","hentry","category-linux","tag-linux"],"_links":{"self":[{"href":"https:\/\/2d6.fr\/index.php?rest_route=\/wp\/v2\/posts\/245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/2d6.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/2d6.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/2d6.fr\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/2d6.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=245"}],"version-history":[{"count":0,"href":"https:\/\/2d6.fr\/index.php?rest_route=\/wp\/v2\/posts\/245\/revisions"}],"wp:attachment":[{"href":"https:\/\/2d6.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/2d6.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/2d6.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}