Script espace disque qui averti a plus 90%

bonjours

pouvez vous me faire un petit script qui m’avertis par mails ci /home dépasse les 90% d’espace utilisé ???

Sys. de fichiers Taille Uti. Disp. Uti% Monté sur /dev/sda5 14G 3,6G 9,5G 28% / tmpfs 886M 0 886M 0% /lib/init/rw udev 882M 176K 882M 1% /dev tmpfs 886M 0 886M 0% /dev/shm /dev/sda6 1,8T 1,7T 61G 97% /home

en suite je ferais un crontab s’exécutant toute les heures verifiant l’espace disque

l’idée serais de faire un

IF /home<= 90 then mail xxx@xxx.xx

comment faire ???

Salut,

Installes tout simplement psad et tu te reportes à la section suivante, au environ de la ligne 415.

Il te fera cela sans problème, entre autre … :wink:

[quote]### Disk usage variables
DISK_CHECK_INTERVAL 300; ### seconds

This can be set to 0 to disable disk checking altogether

DISK_MAX_PERCENTAGE 90;

This can be set to 0 to have psad not place any limit on the

number of times it will attempt to remove data from

/var/log/psad/.

DISK_MAX_RM_RETRIES 10;
[/quote]

trop compliquer pour moi , en script , c’est pas possible ???

Compliqué ? En quoi ? :mrgreen:

# aptitude install psad

:033

Vers la ligne 415, plus ou moins …

[code]# nano -c /etc/psad/psad.conf

This can be set to 0 to disable disk checking altogether

DISK_MAX_PERCENTAGE 90;

[/code]

ok , c’est fait , et âpres ???

comment faire pour dire que /home et / doivent pas dépasser les 90% ci non j’effectue une action " example , mail ou rm /xxxx

comment récupérer le nombre en % dans la commande df pour /home???

je veux faire tout simplement un SCRIPT

si /home et / et supérieur ou égal à 90% d’espace utilisé sur mon disque dur , ALLORS j’effectue une action

Fais rapidement et surement optimisable :

Pour / :

Pour /home :

Personnellement, je surveille toutes mes infrastructures avec nagios.
Avec une interface web, j’ai accès à tous les services que je surveille.

Ce n’est pas psad (ou autre, sauf erreur de ma part :mrgreen: ) ou un script qui empêchera ton disque de ce remplir, c’est à toi seul d’y veiller!

Dans ta situation, ton /home (bien qu’il soit sur une partition différente) fait parti intégrante de ta racine (/)

En réglant le seuil d’alertes de psad.

Ici …

[quote]### This can be set to 0 to disable disk checking altogether
DISK_MAX_PERCENTAGE 90;[/quote]

90 = 90% de “remplissage”

Pour en être informer par mail, il te suffit de configurer la section, ligne 21.

[code]:~# nano -c /etc/psad/psad.conf

Supports multiple email addresses (as a comma separated

list).

EMAIL_ADDRESSES ton_adresse@mail.com;

[/code]

monit gère ça très bien aussi :slightly_smiling:

pour le script j’aurai presque fait pareil :

[code]#!/bin/bash

MyPART=/home

MyLIMITE=90

MyUSE=$(df -h | grep ${MyPART} | awk {‘print $5’} | sed ‘s/%//g’)

MyMAIL="toto@tata.com"

if [ ${MyUSE} -gt ${MyLIMIT} ]; then
echo “Limite d’utilisation disque atteinte ou dépassée” | mail -s “Alerte” ${MyEMAIL}
fi[/code]

ERROR il me marque

comment faire pour metre le resultats d’une commande dans une variable ???

je voudrais dire que la variable VAR et = au resultats de cette commande df -h | grep /home | awk {‘print $5’}

voilla mon scripte , mais il marche pas

[code]a=$(df -h | grep /home | awk {‘print $5’} | sed ‘s/%//g’)

if [ $a<=99 ]; then
echo "Attention bien tot plu d’espace disque ";

else

echo "vous avez encore sufisament d’espace sur le disque dur "

fi
~
~[/code]

man test notamment les comparaisons entre nombres entiers. :wink:

[code]#!/bin/bash
clear
a=$(df -h | grep /home | awk {‘print $5’} | sed ‘s/%//g’)
echo $a

if [ $a -lt 90 ]; then
echo “”

else

    echo "ATTENTION : il ny a presque plu de place sur le disque dur "

fi[/code]~

[size=200] :023 MERCI[/size]

Si je puis me permettre d’ajouter un script un poil plus “complexe” (je ne garantis pas qu’il soit exempt d’erreur, mais il fonctionne pour moi)

[code]#!/bin/bash
#----------------------------------------------------------------------------------------------------------------------------------

checkdiskspace.sh

usage : checkdiskspace.sh [volume name] [percentage]

example : checkdiskspace.sh /home 90

Simple bash script : check volume utilization percentage and send mail to root if alert value is reached

can be used in a cron job

requirements : the “mail” command.

http://agentoss.wordpress.com

default values

volume="/"
percentalert=“90”

show usage with --help

if [ “$1” = “–help” ]; then
echo "Usage: basename $0 [volume name] [percentage]"
exit 1
fi

check volume name

if [ -n “$1” ]; then
# if not null
volume="$1"
fi

check percentage value

if [ -n “$2” ]; then
# if not null
if [ “$2” -ge 0 ] && [ “$2” -le 100 ]; then
percentalert="$2"
else
echo "Invalid percentage value! Must be between 0 and 100…"
exit 1
fi
fi

get occupied percentage for $volume

notice the --max-count in the grep, we only want the first found line

percent=df -x tmpfs -x devtmpfs |grep --max-count=1 " $volume" |awk '{print $5}'|cut -d'%' -f1
if [ -z $percent ]; then
echo "Invalid volume name “$volume”! Volume name must appear in the ‘df’ command’s output."
exit 1
fi

debug

echo “Volume $volume is $percent% used”

if [ $percent -ge $percentalert ]; then
# debug
# echo “alert!“
echo "date - System uname -n notice : volume $volume is $percent% full!” |mail -s "uname -n : disk space alert” root
fi

debug

#echo "date - System uname -n notice : volume $volume is $percent% full!" |mail -s "uname -n : disk space alert" root
exit 0
#----------------------------------------------------------------------------------------------------------------------------------
[/code]

[quote=“fabdunet1313”]
comment faire pour metre le resultats d’une commande dans une variable ???

je voudrais dire que la variable VAR et = au resultats de cette commande df -h | grep /home | awk {‘print $5’}

[code]#!/bin/bash
clear
a=$(df -h | grep /home | awk {‘print $5’} | sed ‘s/%//g’)
echo $a

if [ $a -lt 90 ]; then
echo “”

else

    echo "ATTENTION : il ny a presque plu de place sur le disque dur "

fi[/code]~[/quote]

si tu avais fait attention à ma réponse, tu avais les deux réponses en une :wink:

bref… le principal c’est que tu as trouvé ton bonheur

Salut,

J’ai repris le script d’agentsteel et ajouté un check sur les inodes… :slightly_smiling:

#!/bin/bash
# checkdiskspace.sh
#
# usage : checkdiskspace.sh [volume name] [percentage] [email]
#
# example : checkdiskspace.sh /home 90
#
# Check volume utilization percentage and send mail
# to root if alert value is reached.
#
# requirements : the "mail" command.

# default values
alert="90"
volume="/"
email="kagoun@gmail.com"

# show usage with --help
if [[ "$1" = "-h" || "$1" = "--help" ]]; then
	echo "Usage: `basename $0` [volume name] [percentage] [email]"
	exit 1
fi

# check percentage value
if [ -n "$1" ]; then
	volume="$1"
fi

# check percentage value
if [ -n "$2" ]; then
	# if not null
	if [[ "$2" -ge 0 && "$2" -le 100 ]]; then
		alert="$2"
	else
		echo "Invalid percentage value! Must be between 0 and 100..."
	exit 1
	fi
fi

if [ -n "$3" ]; then
	email="$3"
fi

#SPACE
# get occupied percentage for $volume
# notice the --max-count in the grep, we only want the first found line
percent=`df -x tmpfs -x devtmpfs | grep --max-count=1 " $volume" | awk -F '%' '{ print substr( $1, length($1) - 2, length($1) ) }'`
if [ -z "$percent" ]; then
	echo "Invalid volume name \"$volume\"! Volume name must appear in the 'df' command's output."
	exit 1
fi

if [ "$percent" -ge $alert ]; then
	echo "`date` - System `uname -n` notice : SPACE volume $volume is $percent% full!" | mail -s "`uname -n` : disk space alert $volume" $email
fi

#INODES
percent=`df -i -x tmpfs -x devtmpfs | grep --max-count=1 " $volume" | awk -F '%' '{ print substr( $1, length($1) - 2, length($1) ) }'`
if [ -z "$percent" ]; then
	echo "Invalid volume name \"$volume\"! Volume name must appear in the 'df' command's output."
	exit 1
fi

if [ "$percent" -ge $alert ]; then
	echo "`date` - System `uname -n` notice : INODES volume $volume is $percent% full!" | mail -s "`uname -n` : disk space alert $volume" $email
fi

A+

KC

Bonjour a tous
ce sujet m’a énormément aidé il me fallait le même script pour être alerté en cas d’occupation >90 % sur mon disque dur
mais moi je veux recevoir une alerte sur une URL spécifique quelqu’un saura me dire comment faire ?
merci