Aplica quotas a partir de um arquivo gerado pelo repquota.

Publicado por Alessandro Dias 09/04/2007

[ Hits: 5.489 ]

Download aplica_quota.sh




Aplica quotas a partir de arquivos [.gz] gerados pelo repquota.

Para gerar os arquivos verifique o script backup quotas ou execute:

#repquota -aug | gzip > quota.all.gz
#repquota -au | gzip > quota.usuarios.gz
#repquota -ag | gzip > quota.grupos.[GRUPO].gz

  



Esconder código-fonte

#!/bin/bash
# @ Alessandro Dias [25/01/2007]

function aplica_quota_usuario()
{
  local QUOTAS
  local NLINHAS
  local LINHA
  local i
  local USUARIO
  local QUOTA

  IFS=$'\t '

  QUOTAS=`cat $1/quota.usuarios.gz | gunzip | sed -e "1,5d" | sed -e "/^$/d"`
  NLINHAS=`echo $QUOTAS | wc -l |cut -d " " -f 1`
  for ((i=1; i<=$NLINHAS; i++))
  do
    LINHA=`echo $QUOTAS | sed -ne ${i}p`

    USUARIO=`echo $LINHA | cut -d " " -f 1`
    QUOTA=`echo $LINHA | cut -d " " -f 4`

    if [ "$USUARIO" != "root" ]; then
      echo "$USUARIO - $QUOTA"
      setquota -u $USUARIO $QUOTA $QUOTA 0 0 /home
    fi
  done
}

function aplica_quota_grupo()
{
  local QUOTAS
  local NLINHAS
  local LINHA
  local i
  local GRUPO
  local QUOTA

  IFS=$'\t '

     GROUPS0X=`echo $1 | cut -d "-" -f 2`
     ARQ="$2/quota.grupos.$GROUPS0X.gz"
     QUOTAS=`cat $ARQ | gunzip | sed -e "1,5d" | sed -e "/^$/d"`

  NLINHAS=`echo $QUOTAS | wc -l |cut -d " " -f 1`
  for ((i=1; i<=$NLINHAS; i++))
  do
    LINHA=`echo $QUOTAS | sed -ne ${i}p`

    GRUPO=`echo $LINHA | cut -d " " -f 1`
    QUOTA=`echo $LINHA | cut -d " " -f 4`
    
    if [ "$GRUPO" != "root" ]; then 
      echo "$GRUPO - $QUOTA"
      setquota -g $GRUPO $QUOTA $QUOTA 0 0 /mnt/$GROUPS0X
    fi
  done
}

function aplica_quota()
{
  if [ "$1" == "user" ]; then
     echo -e "\ntipo=$1 - part=$2\n"  
     aplica_quota_usuario $3
  else
      if [ "$1" == "group" ]; then
         echo -e "\ntipo=$1 - part=$2\n"
         aplica_quota_grupo $2 $3
      fi
  fi
}

if [ $# -ne 0 ]; then
   IFS=$'\t '
   PASTA=$1
   # quotas aplicadas para as partições abaixo
   QUOTAS=`cat $1/quota.all.gz | gunzip | grep "\*\*\*" | cut -d " " -f 4,8`
   NLINHAS=`echo $QUOTAS | wc -l |cut -d " " -f 1`
   for ((i=1; i<=$NLINHAS; i++))
   do 
     LINHA=`echo $QUOTAS | sed -ne ${i}p`
     TIPO=`echo $LINHA | cut -d " " -f 1`
     PART=`echo $LINHA | cut -d " " -f 2`
     aplica_quota $TIPO $PART $PASTA
   done
else
   echo -en "\E[1;37;41m{FONTE}33[4mSintaxe correta:  aplica_quota.sh <pasta quotas>{FONTE}33[0m\E[0m"
   echo -en "\n<pasta quotas> contem os arquivos .gz com as quotas.\n"
fi

Scripts recomendados

Script para Newsletters

Teste de desempenho com números primos em BASH

POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - ENVIA MSG CASO O USUÁRIO PASSE 90% DA SUA QUOTA

Projeto Wine's Faces

relatórios com o sarg


  

Comentários
[1] Comentário enviado por diaspcf em 07/05/2007 - 15:18h

Caro Usuário,
Tente pegar o script a partir do código fonte, pois parece que o link está quebrado.
Obrigado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts