Script surveiller remplissage des différentes partitions

Bonjour,

Je désire surveiller le remplissage des différentes partitions de mon système,je souhaiterais via un script Bash lister mes partitions les surveiller à partir de la commande df, initialiser un fichier log spécifique dans /var/log,avec une fonction qui lui permette de déposer un message dans le fichier log avec, à chaque fois, la date et l’heure,enregistrer dans le fichier log le début de la surveillance,
exécuter une boucle infinie avec une pose de 5 minutes entre chaque tour,à chaque tour de boucle il teste chaque partition et envoie un message si l’espace libre est
inférieur à 10% (réglable) et stoppe sur réception d’un signal SIGTERM avec un message dans le log.

N’ayant pas beaucoup de connaissance en programmation, je fais appel à vos lumière.

Merci par avance pour votre aide.

[quote]Q: How do I do <some small essay problem; obviously contrived for a school assignment; too well defined to be from the real world>?
A: Do it yourself. If you get stuck, ask a specific question.[/quote]

Bonjour,

perso, je préfère programmer en Perl qu’en bash, c’est à mon gout beaucoup plus simple de prime abord.

En reprenant ce que tu expliques, tu as déjà en gros l’algorithme à coder.

voici un peu de doc pour perl: perl.developpez.com/cours/

Si tu as des questions sur la création du script, repasses nous voir :wink:

NB: cet avis n’engage que moi, zsh ou python sont très bien aussi, mais j’ai bien plus adhéré à Perl :slightly_smiling:

@ichichi > Tu ne pose pas une question précise.

On écrira pas le script pour toi sous prétexte que tu l’a demandé. Commence à tenter quelque chose qui fait une partie de la solution et on t’aidera sur chaque problème spécifique.

@grigric > C’est cool un perliste :slightly_smiling: Je suis d’accord pour zsh, mais python, non faut pas déconner non plus. :slightly_smiling:

@misterFreez: c'est pour facher personne, même si on sait que le Perl c'est mieux que tout :slightly_smiling:

Bonjour,

J’avais fait un script pour surveiller une partition spécifique avec envoi de mail dès que la place disponible est en dessous d’un poucentage. A Toi de l’adapter, mais je pense que le plus gros est fait :

#!/bin/sh

14 avril 2011

Space Max

Chemin du log à définir

chem=/root/agents_max/
email=mon_email@free.fr

Surveillance de la partition home

dispo_home=$((100-$(df -h | grep home | awk -F " " ‘{print $4}’ | sed “s/%//”)))
echo -e “Le $(date +%d-%m-%Y” “%H:%M:%S) : La place libre du système de fichier home est de $dispo_home % seulement” >> $chem"rapport.log";
if [ $dispo_home -lt 30 ]; then
mail -s “Surveillance partition” $email < $chem"rapport.log";
fi

Voilà, en espérant t’avoir aider :slightly_smiling:

il y a les quota qui permette de gerer cela, c’est plus fiable qu’un simple script/perl etc :slightly_smiling:
enfin quand je dit simple tout est relatif :wink:

La mise en place d’un agent Zabbix récupérant un trigger simple permet de surveiller partition par partition une machine, autre avantages tu peu ensuite gérer le pourcentage de remplissage d’une ou plusieurs partition assez simplement.

Le gros désavantages c’est qu’il te faudra mettre ne place un proxy Zabbix et d’installer un agent sur la machine à surveiller ( c’est un peu usines à gaz, un simple “check quota” devrait effectivement donné des résultats sympa ou carrément un petit script maison ).

Je me contente de simples affichage dans un .conkyrc!!

Sinon la doc sur perl sur developpez.com commence a dater, ils sont toujours d’actualité??

Tout code perl 5 reste compatible avec Perl 5.14 (la dernière version actuelle). Les développeurs de perl sont très soucieux de cela. Perl 5 est sorti en 1994.

Bien sûr le langage a énormément évolué depuis (surtout depuis la version 5.10). Bref ça reste d’actualité au pire ça n’utilise pas les dernières techniques.

C’est ce qui le différencie de Python certainement…

Python et perl sont vraiment 2 langages totalement opposés si l’un dis une chose, le second dis précisément l’inverse. En perle tu peux écrire ça :

foreach (@tableau) {
    say;
}

C’est très loin de python autant sur la forme (; à la fin des instructions, bloque ouvert et fermé avec {}) que du fond on utilise une variable implicite $_ dans say, déclaré de manière transparente par le foreach.

python est beaucoup plus verbeux que Perl.

Perso, si je peux faire un script en 10 lignes au lieu de 100, je préfère…

Selon vous, y a t-il des choses que Python fait que Perl ne fait pas? et inversement? (outre la vaisselle ou le café :mrgreen: )

Les deux sont turing complet donc non.

Mais si tu veux des éléments discriminants : perl roxx des patates en ligne de commande (il est capable de remplacer sed/grep/awk/cut) et python a ipython.

Python est très utilisé et très armé pour le scientifique, perl déchiquette tout les langages pour de la programmation proche du système.

Perl est unix, python est attristant.
Perl est beau, python tue les pandas.
Perl rend les cheveux doux et soyeux, python éloigne les filles.
Perl c’est classe, python est une mode.

Whaouh!! Que de bonnes raisons de préférer le langage Perl!!

Ce qui m’ennuies avec Python, ceux sont les fréquentes versions que le langage connait avec des problèmes de compatibilités de versions entre un script écrit dans une version 2.7 et 3.X

Il y a je crois un outil qui s’occupe de la migration de version pour les script…

Perl semble plus pérenne a ce niveau.

Par contre tu dis que la version actuelle de Perl est la 5.14 mais je viens de voir qu’il existe une version Perl 6

Ce genre d’incompatibilité est encore normal. Mais tu as des trucs plus fun entre la version 2.4 et 2.7.

Perl semble plus pérenne a ce niveau.

Perl6 n’est pas encore sorti (pas pour ça qu’elle n’est pas encore disponible). Perl6 est une énorme évolution du langage (bien plus que python 2.7 -> 3). Je ne connais pas énormément Perl6 et je ne sais quel compatibilité il y aura entre 5.x et 6.

Je peux juste te dire qu’une grosse partie des fonctionnalités arrivé en 5.10 et plus sont des backportage de perl6 (méthode say, given/when, gestion des encodages, etc).