Je suis tout nouveau sous le forum et idem pour le scripting sous linux.

Voila je cherche à réaliser un script qui va surveiller l'espace utiliser par certain répertoire (chaque répertoire représente un espace ftp alloué au client) ainsi que l'espace total du disque afin de prévenir l'opérateur par mail si le client stocke de trop gros fichiers. (j'ai pensé à 5Go d'espace par client).
Il pourra aussi supprimer les anciens fichiers > 1 mois.

Voici mon code :

Code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 
#!/bin/bash
 
# Suppression du fichier de log
rm -f /var/www/vhosts/toto.fr/web_users/EspaceFtp.log
 
# Changement du répertoire courant
cd /var/www/vhosts/toto.fr/web_users
 
# Boucle pour traiter tous les répertoires clients (dans web_users) mais non récursivement (1 seul niveau)  : pour réaliser une liste.
ListeWebUsers="$(find * -maxdepth 0 -type d)"
for WebUsers in ${ListeWebUsers};do
 
    # Calcul de l'espace occupé par le client
    ResultTailleRepWebUsers=$(du -sm $WebUsers)
    TailleRepWebUsers=$(echo $ResultTailleRepWebUsers|cut -d " " -f1)
 
    # Gros clients : Test si la taille est > 5 Go
    if [ $TailleRepWebUsers>5000 ];then
        # Envoi d'un mail pour nous prévenir (EnvoiMail() $Subject $Body)
        Subject="[" $WebUsers "] L'espace utilisé sur leur serveur ftp est trop importante : "$TailleRepWebUsers "Mo"
        Body="Veuillez demander au client de supprimer les anciens fichiers rapidement."
        Pj=""
        EnvoiMail() "$Subject" "$Body" "$Pj"
    fi
 
    # Suppression des fichiers vieux de plus d'un mois
    find /$WebUsers -mtime +30 -print -exec rm -fR {} + >> EspaceFtp.log
 
    # Suppression des répertoires vides
    find /$WebUsers/* -type d -empty|xargs rm -fR        
 
    # Remplissage du fichier de suivi EspaceFtp.log
    echo "$WebUsers            $TailleRepWebUsers">>EspaceFtp.log
 
done
 
# Récuperation en pourcentage de l'espace restant disponible sur le serveur (hdd local)
ResultTailleHdd=df /dev/sda3
EspaceUtilise=$(echo ${ResultTailleHdd:-6}|cut -d"%" -f1)
EspaceRestant=$(expr 100-$EspaceUtilise)
 
echo "">>EspaceFtp.log
echo "Espace total restant sur le serveur " $HOSTNAME " : " $TailleRepFtpInformatique "%">>EspaceFtp.log
 
# Test si l'espace disponible est inferieur à 30% (càd ~20Go) : prévenir par mail
if [ expr $EspaceRestant<30 ];then
    Subject="[ATTENTION] Manque de place sur www.toto.fr"
    Body="Il ne reste que " $EspaceRestant "% d'espace libre sur le serveur. Veuiller faire rapidement de la place."
    Pj="EspaceFtp.log"
    EnvoiMail() "$Subject" "$Body" "$Pj"
fi
J'ai besoin de vous pour 2 choses :
- me corriger le script s'il y a des erreurs (avec des explications svp)
- m'expliquer comment je peux tester ce script ligne à ligne car je ne sais pas comment le tester en "mode pas à pas"

Merci à tous