[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

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

   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


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