POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - ATUALIZANDO QUOTA

Publicado por Alessandro Dias 17/05/2005

[ Hits: 4.348 ]

Download update_quota.sh




Esse script altera a quota do usuário no banco, recalcula a utilização e atualiza o banco Quota.

  



Esconder código-fonte

#!/bin/sh
#
###############################################################################
#  Script UPDATE_QUOTA.SH v1.0                                                       #
#                                                                             #
#  Autor: Alessandro Dias                                                     #
###############################################################################
#                                                                             #
#  Programa atualizado para trabalhar com SGBD Mysql e uma cota por usuário.  #
#                                                                             #
###############################################################################
#    Este programa calcula o tamanho dos emails recebidos (Entrada + Pastas), #
# e atualiza o uso da quota no banco mysql.                                   #
#    Nao precisa de nenhum pacote adicional, como ldap, mysql, postgre, etc.  #
#    Para instalacao basta alterar as permissoes deste arquivo, e colocalo na #
# pasta /etc/cron.daily para a execucao diaria do script.                     #
#    Alem disso vc deve alterar as variaveis para adaptar ao seu sistema      #
###############################################################################
#
BASEDIR=/var/mail
MYHOSTNAME="venus.rjo.ccom.eb.mil.br"
MYDOMAIN="rjo.ccom.eb.mil.br"
TODOS=`cat /etc/passwd | cut -d : -f 1`
clear
echo "*********************************************************************************************"
echo "*                                 Programa UPDATE_QUOTA.SH 1.0                              *"
echo "*********************************************************************************************"
echo "Autor: Alessandro Dias"
echo "---------------------------------------------------------------------------------------------"
echo "Dados do Usuario: "

  USERNAME=$1 # inicializa USERNAME
if [ "$USERNAME" != "" -a "$2" != "" ]; then
      GRUPO=`groups $USERNAME |cut -d " " -f 3`
      #QUOTA - Tamanho em Bytes (100MBytes)
      QUOTA_MB=$2 
      MAILQUOTA=`expr $QUOTA_MB \* 1000000`
      MBOX=`du -ab $BASEDIR/$USERNAME 2>/dev/null | cut -f 1`
      HOME=`du -b /home/$USERNAME/mail | cut -f 1`
      TAMATUAL=`expr $MBOX \+ $HOME`
      TAMATUAL_TMP=`expr $TAMATUAL \* 100`
      MBOX_TMP=`expr $MBOX \* 100`
      HOME_TMP=`expr $HOME \* 100`
      USO_MBOX=`expr $MBOX_TMP / $MAILQUOTA`
      USO_HOME=`expr $HOME_TMP / $MAILQUOTA`
      USO=`expr $TAMATUAL_TMP / $MAILQUOTA`
      echo "U:$USERNAME G:$GRUPO Q:$QUOTA_MB T:(mbox=$MBOX + home=$HOME) = $TAMATUAL U:(mbox=$USO_MBOX% + home=$USO_HOME%) = $USO%"
      # Atualiza a utulização da mbox
      mysql -u root -ppostfix -e "update user_quota set quota=$QUOTA_MB where usuario='$USERNAME'" quota
      mysql -u root -ppostfix -e "update user_quota set uso=$USO where usuario='$USERNAME'" quota
          # Gera uma Msg de Alteração!
          #Wed, 6 Apr 2005 11:48:47 -0000 (UTC)
          #Convertendo data para ingles
          DIA=`date +%a`
          case $DIA in
          Seg) DIA="Mon" ;; 
          Ter) DIA="Tue" ;; 
          Qua) DIA="Wed" ;; 
          Qui) DIA="Thu" ;; 
          Sex) DIA="Fri" ;; 
          Sab) DIA="Sat" ;; 
          Dom) DIA="Sun" ;; 
          esac
          MES=`date +%b`
          case $MES in
          Abr) MES="Apr" ;; 
          Mai) MES="May" ;; 
          Ago) MES="Aug" ;; 
          Set) MES="Sep" ;; 
          Out) MES="Oct" ;; 
          esac
      DATA_HJ_TMP=`date`
      DATA_HJ=`echo $DATA_HJ_TMP | cut -d " " -f 1,2,3,4,6`
      echo -e "\nFrom postmaster@$MYDOMAIN  $DATA_HJ\nReturn-Path: <postmaster@$MYHOSTNAME>\nX-Original-To: postmaster\nDelivered-To: postmaster@$MYDOMAIN\nReceived: by $MYHOSTNAME (Postfix, userid 0)\nFrom: \"POSTMASTER\" <postmaster@$MYDOMAIN>\nTo: $USERNAME@$MYDOMAIN\nSubject: Quota Alterada! ($QUOTA_MB MB)\nDate: $DIA, `date +%e` $MES `date +%Y` `date +%T` -0000 (UCT)\n\nAtencao: Sua quota de utilizacao foi alterada pelo administrador para $QUOTA_MB MBytes (Uso=$USO%).\n\n--- Resumo de utilizacao: ---\nTamanho(bytes): ( mbox=$MBOX + pastas=$HOME ) = $TAMATUAL\nPercentual: ( mbox=$USO_MBOX% + pastas=$USO_HOME% ) = $USO%\n\n --------------------------\n Secao de Gerencia de Redes\n 2CTA - Div Op - SGRT\n Contatos (2519-5076/5068)\n" >> $BASEDIR/$USERNAME
else 
  echo -e "\nEntre com a sintaxe correta do comando:\n./quota_user.sh <nome_usuario> <nova_quota>\n" 
fi
echo -e "---------------------------------------------------------------------------------------------\n"

Scripts recomendados

rc.mailMyIp - Informa seu IP externo para o Gmail

Instalando Nagios 4.0.8 - Debian 7

Script Firewall Iptables + compartilhar internet

Script de backup

Script para desligar o servidor


  

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

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

[2] Comentário enviado por diaspcf em 21/05/2007 - 17:26h

Pessoal, não sei o que está havendo, mas todos os meus scrits estão com esse problema. Já entrei em contato várias vezes com os moderadores pelo email do suporte, mas até agora nenhum retorno!!!
Caso alguem queira o script, me mande uma mensagem com o email que eu mando, ok?
Att.
Alessandro.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts