[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 #!/bin/bash 2 3 4 # 5 ## $Id: quota.sh 7061 2012-04-02 09:22:45Z dbo $ ## 6 # 7 8 ##### Script permettant le reglage des quotas des groupes utilisateurs ##### 9 # 10 11 12 #Couleurs 13 COLTITRE="\033[1;35m" # Rose 14 COLPARTIE="\033[1;34m" # Bleu 15 COLTXT="\033[0;37m" # Gris 16 COLCHOIX="\033[1;33m" # Jaune 17 COLDEFAUT="\033[0;33m" # Brun-jaune 18 COLSAISIE="\033[1;32m" # Vert 19 COLCMD="\033[1;37m" # Blanc 20 COLERREUR="\033[1;31m" # Rouge 21 COLINFO="\033[0;36m" # Cyan 22 23 24 ERREUR() 25 { 26 echo -e "$COLERREUR" 27 echo "ERREUR!" 28 echo -e "$1" 29 echo -e "$COLTXT" 30 exit 1 31 } 32 33 grep xfs /etc/fstab >/dev/null 34 if [ "$?" == "0" ] 35 then 36 SET_QUOTA="/usr/sbin/setquota -F xfs" 37 else 38 SET_QUOTA="/usr/sbin/setquota" 39 fi 40 41 WWWPATH="/var/www" 42 ## recuperation des variables necessaires pour interoger mysql ### 43 if [ -e $WWWPATH/se3/includes/config.inc.php ]; then 44 dbhost=`cat $WWWPATH/se3/includes/config.inc.php | grep "dbhost=" | cut -d = -f 2 | cut -d \" -f 2` 45 dbname=`cat $WWWPATH/se3/includes/config.inc.php | grep "dbname=" | cut -d = -f 2 | cut -d \" -f 2` 46 dbuser=`cat $WWWPATH/se3/includes/config.inc.php | grep "dbuser=" | cut -d = -f 2 | cut -d \" -f 2` 47 dbpass=`cat $WWWPATH/se3/includes/config.inc.php | grep "dbpass=" | cut -d = -f 2 | cut -d \" -f 2` 48 else 49 ERREUR "Fichier de configuration inaccessible, le script ne peut se poursuivre." 50 51 fi 52 53 #patch 1/6 pour application immédiate des quotas 54 CREER_FICHIER() 55 { 56 if [ "$2" == "/home" ]; then 57 #~ /usr/share/se3/sbin/mkhome.pl $1 58 59 ### protège les serveurs vmware (essentiellement) contre la création des homes de tous les users par création d'un fichier vide sur /home 60 if [ ! -e /home/$1 ] ; then 61 if [ ! -e /home/quotas_tmp ]; then 62 mkdir /home/quotas_tmp 63 #~ cree="yes" 64 chmod 700 /home/quotas_tmp 65 fi 66 67 if [ ! -e /home/quotas_tmp/$1 ]; then 68 touch /home/quotas_tmp/$1 69 chown $1 /home/quotas_tmp/$1 70 fi 71 fi 72 else 73 if [ ! -e /var/se3/quotas_tmp ]; then 74 mkdir /var/se3/quotas_tmp 75 #~ cree="yes" 76 chmod 700 /var/se3/quotas_tmp 77 fi 78 79 if [ ! -e /var/se3/quotas_tmp/$1 ]; then 80 touch /var/se3/quotas_tmp/$1 81 chown $1 /var/se3/quotas_tmp/$1 82 fi 83 fi 84 } 85 86 if [ $# -ne 4 -o "$1" = "--help" -o "$1" = "-h" ]; then 87 echo -e "$COLERREUR\c" 88 echo -e "$0 a besoin d'arguments pour fonctionner" 89 echo -e "$COLINFO\c" 90 echo "Passer en arguments dans l'ordre :" 91 echo "- le nom du groupe ou de l'utilisateur dont vous voulez fixer le quota" 92 echo "- le quota soft à fixer" 93 echo "- le quota hard à fixer" 94 echo "- la partition sur laquelle on applique le quota" 95 echo -e "$COLTXT" 96 echo "ex1 : ./quota.sh Profs 200Mo 200Mo /home" 97 echo "fixera un quota de 200Mo soft et hard sur home pour chaque prof" 98 echo "" 99 echo "ex2: ./quota.sh hugov 1Go 1Go /home" 100 echo "fixera un quota de 1go soft et hard sur home pour l'utilisateur hugov" 101 exit 1 102 fi 103 104 if [ ! -e /home -a "$4" == "/home" ]; then 105 ERREUR "Pas de répertoire /home" 106 fi 107 108 ### recuperation des parametres actuels de l'annuaire dans la base #### 109 BASEDN=`echo "SELECT value FROM params WHERE name=\"ldap_base_dn\"" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` 110 111 112 SOFT_QUOTA=$(echo "$2" | sed -e "s/[gG][oO]/000000/" | sed -e "s/[Mm][Oo]/000/" | sed -e "s/[Aa]ucun/0/") 113 CONV_SOFT_QUOTA=$(echo "$SOFT_QUOTA" | sed -e "s/000000\$/Go/" | sed -e "s/000\$/Mo/") 114 115 HARD_QUOTA=$(echo "$3" | sed -e "s/[gG][oO]/000000/" | sed -e "s/[Mm][Oo]/000/" | sed -e "s/[Aa]ucun/0/") 116 CONV_HARD_QUOTA=$(echo "$HARD_QUOTA" | sed -e "s/000000\$/Go/" | sed -e "s/000\$/Mo/") 117 118 if [ $SOFT_QUOTA -eq 0 ]; then 119 CONV_SOFT_QUOTA="Aucun" 120 fi 121 122 if [ "$HARD_QUOTA" -eq 0 ]; then 123 CONV_HARD_QUOTA="Aucun" 124 fi 125 126 127 if [ -e /usr/sbin/setquota ]; then 128 #~ #patch 2/6 pour application immédiate des quotas 129 #~ if [ "$4" == "/var/se3" -a ! -e /var/se3/quotas_tmp ]; then 130 #~ mkdir /var/se3/quotas_tmp 131 #~ cree="yes" 132 #~ chmod 700 /var/se3/quotas_tmp 133 #~ fi 134 135 TST_GRP=$(ldapsearch -xLLL cn=$1 -b $BASEDN | grep member) 136 137 if [ -z "$TST_GRP" ]; then 138 TST_UID=$(ldapsearch -xLLL uid="$1") 139 if [ -z "$TST_UID" ]; then 140 ERREUR "Impossible de trouver le groupe ou l'utilisateur passé en paramètre dans l'annuaire Ldap" 141 else 142 if [ "$1" != "admin" -a "$1" != "root" -a "$1" != "www-se3" ]; then 143 echo "je fixe le quota pour l'utilisateur $1 sur la partition $4" 144 #patch 3/6 pour application immédiate des quotas 145 CREER_FICHIER $1 $4 146 $SET_QUOTA $1 $SOFT_QUOTA $HARD_QUOTA 0 0 $4 147 echo "quota soft : $CONV_SOFT_QUOTA" 148 echo "quota hard : $CONV_HARD_QUOTA" 149 echo 150 else 151 echo "Par securité on ne peut pas fixer de quota sur $1" 152 fi 153 fi 154 fi 155 TST_GRP_POSIX=$(ldapsearch -xLLL "cn=$1" | grep memberUid) 156 if [ -z "$TST_GRP_POSIX" ]; then 157 ldapsearch -x -LLL cn=$1 -b $BASEDN | grep uid | cut -d " " -f2 | cut -d "=" -f2 | cut -d "," -f1 | while read A 158 do 159 if [ "$A" != "admin" -a "$A" != "root" -a "$A" != "www-se3" ]; then 160 echo "je fixe le quota pour $A sur la partition $4" 161 #patch 4/6 pour application immédiate des quotas 162 CREER_FICHIER $A $4 163 $SET_QUOTA $A $SOFT_QUOTA $HARD_QUOTA 0 0 $4 164 echo "quota soft : $CONV_SOFT_QUOTA" 165 echo "quota hard : $CONV_HARD_QUOTA" 166 echo 167 else 168 echo "Par securité on ne peut pas fixer de quota sur $A" 169 fi 170 done 171 172 else 173 174 ldapsearch -x -LLL "cn=$1" | grep memberUid | cut -d " " -f2 | while read A 175 do 176 if [ "$A" != "admin" -a "$A" != "root" -a "$A" != "www-se3" ]; then 177 echo "je fixe le quota pour $A sur la partition $4" 178 #patch 5/6 pour application immédiate des quotas 179 CREER_FICHIER $A $4 180 $SET_QUOTA $A $SOFT_QUOTA $HARD_QUOTA 0 0 $4 181 echo "quota soft : $CONV_SOFT_QUOTA" 182 echo "quota hard : $CONV_HARD_QUOTA" 183 echo 184 else 185 echo "Par securité on ne peut pas fixer de quota sur $A" 186 fi 187 done 188 fi 189 190 #patch 6/6 pour application immédiate des quotas 191 #if [ "$cree" == "yes" ]; then 192 rm -R /home/quotas_tmp > /dev/null 2>&1 193 rm -R /var/se3/quotas_tmp > /dev/null 2>&1 # si plusieurs scripts quota.sh sont lancés en // le répertoire peut avoir déjà été supprimé 194 #fi 195 else 196 ERREUR "Le paquet quota n'est pas installé.\nEffectuez:\n\tapt-get update\n\tapt-get install quota" 197 fi 198 exit 0
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 |