[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/usr/share/se3/scripts/ -> quota.sh (source)

   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


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1