[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 #!/bin/bash 2 # AUTEUR: Lacroix Olivier 3 # version 1.0 4 # Fichier de filtrage du resultat de quota (initialement de repquota) pour gagner en rapidite: fortement inspire du script de Franck Molle quota.sh 5 # 6 ## $Id: repquota_filtre.sh 7061 2012-04-02 09:22:45Z dbo $ ## 7 # 8 ##### Affiche les quotas effectivement fixes sur une partition donnee pour toute ou partie des users ##### 9 # 10 11 ERREUR() 12 { 13 echo 14 [ $1 == "1" ] && echo "ERREUR DE SYNTAXE:" 15 echo "Ce script n'admet comme premier argument que: /home ou /var/se3" 16 echo 17 echo "Exemples d'utilisations:" 18 echo 19 echo "repquota_filtre.sh /home Profs affiche tous les quotas sur /home pour le groupe Profs" 20 echo 21 echo "repquota filtre.sh /home lacroixo affiche le quota de l'utilisateur lacroixo" 22 echo 23 echo "repquota_filtre.sh /home affiche tous les quotas sur /home pour tout l'annuaire" 24 exit $1 25 } 26 27 #ERREUR POUR L'INSTANT DANS LE TEST CI-DESSOUS: si pas d'argument, c'est pas gr! 28 [ $# -eq 0 ] && ERREUR 1 29 [ $# -gt 2 ] && ERREUR 1 30 [ "$1" = "--help" -o "$1" = "-h" ] && ERREUR 0 31 [ ! $1 == "/home" -a ! $1 == "/var/se3" ] && ERREUR 1 32 [ ! -e /usr/bin/quota ] && echo -e "Le paquet quota n'est pas installe.\nEffectuez:\n\tapt-get update\n\tapt-get install quota" 33 34 WWWPATH="/var/www" 35 partition=$(grep " $1 " /etc/mtab | cut -d " " -f1) #recherche des partitions reelles 36 37 ## recuperation des variables necessaires pour interoger mysql ### 38 if [ -e $WWWPATH/se3/includes/config.inc.php ]; then 39 dbhost=`cat $WWWPATH/se3/includes/config.inc.php | grep "dbhost=" | cut -d = -f2 | cut -d \" -f2` 40 dbname=`cat $WWWPATH/se3/includes/config.inc.php | grep "dbname=" | cut -d = -f 2 |cut -d \" -f 2` 41 dbuser=`cat $WWWPATH/se3/includes/config.inc.php | grep "dbuser=" | cut -d = -f 2 | cut -d \" -f 2` 42 dbpass=`cat $WWWPATH/se3/includes/config.inc.php | grep "dbpass=" | cut -d = -f 2 | cut -d \" -f 2` 43 else 44 ERREUR "Fichier de configuration inaccessible, le script ne peut se poursuivre." 45 fi 46 47 ### recuperation des parametres actuels de l'annuaire dans la base #### 48 BASEDN=`echo "SELECT value FROM params WHERE name=\"ldap_base_dn\"" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` 49 50 #### remplissage de $userliste : utilisateurs dont le quota doit etre affiche ##### 51 if [ $# -eq 2 ] ; then #si 2 arguments, faire recherche 52 #etablit la liste $userliste des utilisateurs a qui fixer le quota 53 TST_GRP=$(ldapsearch -xLLL cn=$2 -b $BASEDN | grep member) 54 if [ -z "$TST_GRP" ]; then 55 TST_UID=$(ldapsearch -xLLL uid="$2") 56 if [ -z "$TST_UID" ] ; then 57 ERREUR "Impossible de trouver le groupe ou l'utilisateur passe en parametre dans l'annuaire Ldap" 58 else 59 userliste="$2" 60 fi 61 else 62 userliste="$(ldapsearch -xLLL -b cn=$2,ou=Groups,$BASEDN memberUid | egrep "^memberUid:" | cut -d" " -f2)" 63 fi 64 fi 65 66 #### affichage quota filtres ######## 67 echo "Les utilisateurs non listes n'ont aucun fichier sur le disque." 68 echo "Ce n'est pas pour autant qu'ils n'ont pas de quota!" 69 echo 70 echo "L'unite est le Mo (occupation de l'espace disque arrondi a l'entier inferieur)." 71 echo 72 echo -e "Login\tUtilise\tQuota\tMax\tGrace" 73 74 if [ -z "$userliste" ] ; then 75 # cas de l'absence du 2eme argument : on veut tous les utilisateurs ! $userliste est vide 76 ##### on veut tout le monde ##### 77 repquota $partition | egrep "^[a-z]" | tr -s " " | sort -n | gawk -F" " ' 78 { 79 $3/=1000 80 $4/=1000 81 gsub(/^0$/,"-",$4) 82 gsub(/^0$/,"-",$5) 83 {if ($2 == "+-") 84 {if ($6 == "none" || $6 == "aucun") 85 {print $1 "\t" $3 "\t" $4 "\t" $5 "\tExpire" 86 } 87 else 88 {if ($6 ~ ":") 89 {if (int($6) >= 24) 90 {print $1 "\t" $3 "\t" $4 "\t" $5 "\t2" 91 } 92 else 93 {print $1 "\t" $3 "\t" $4 "\t" $5 "\t1" 94 } 95 } 96 else 97 gsub(/days/,"",$6) 98 {print $1 "\t" $3 "\t" $4 "\t" $5 "\t" $6 99 } 100 } 101 } 102 else 103 {print $1 "\t" $3 "\t" $4 "\t" $5 "\t-" 104 } 105 } 106 }' 107 else 108 ##### affichage filtre #### 109 # dans la sortie de repquota, on ne garde que les lignes qui commencent par une minuscule (les seules concernant les utilisateurs) : egrep "^[a-z]" 110 # je genere l'espression reguliere ^toto|^tata| avec la commande : echo "^$(echo ${userliste})" | sed "s/ /|^/g" 111 repquota $partition | egrep "^[a-z]" | egrep "`echo "^$(echo $userliste})" | sed "s/ /|^/g"`" | tr -s " " | sort -n | gawk -F" " ' 112 { 113 $3/=1000 114 $4/=1000 115 gsub(/^0$/,"-",$4) 116 gsub(/^0$/,"-",$5) 117 {if ($2 == "+-") 118 {if ($6 == "none" || $6 =="aucun") 119 {print $1 "\t" $3 "\t" $4 "\t" $5 "\tExpire" 120 } 121 else 122 {if ($6 ~ ":") 123 {if (int($6) >= 24) 124 {print $1 "\t" $3 "\t" $4 "\t" $5 "\t2" 125 } 126 else 127 {print $1 "\t" $3 "\t" $4 "\t" $5 "\t1" 128 } 129 } 130 else 131 gsub(/days/,"",$6) 132 {print $1 "\t" $3 "\t" $4 "\t" $5 "\t" $6 133 } 134 } 135 } 136 else 137 {print $1 "\t" $3 "\t" $4 "\t" $5 "\t-" 138 } 139 } 140 }' 141 fi
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |