Aplica quotas a partir de um arquivo gerado pelo repquota.

Publicado por Alessandro Dias 09/04/2007

[ Hits: 5.546 ]

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

PS com gráficos por processo

Administração de Usuários

Script para automatizar OpenVpn

Exibir configurações de rede

Instalação do Cisco Packettracer 7.2 no Debian 10


  

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