analise

Publicado por antonio mauricio sousa 16/05/2005

[ Hits: 6.036 ]

Download analise.sh




este script foi desenvolvido com o objectivo de facilitar a vida a um admin que sistemas que deseja fazer analises periodicas da utilizaçao das directorias (home) dos utilizadores... tem com input o nome do user e um criterio de pesquisa de ficheiros

este não esta a 100%, acho eu mas...como ja disse antes eu gostava que fizessem criticas contrutivas ao script.. porque o meu interesse é aprender

  



Esconder código-fonte

#!/bin/bash
#
#=================================================
#                                       analise.sh
#=================================================
# script para fazer uma analise à directoria do $1 
#=================================================
#                           antonio mauricio sousa
#=================================================
#                       antonio_sousa@linus.uac.pt
#=================================================

# NOTAS:
# . procurar por * não é legal
# . procurar por *.sh não dá porque é a mesma extençao deste ficheiro
# . .... não sao detectectados como argumentos do find
# para ultrapassar isso é necessario o uso de plicas(' ')
# ex: ./analise.sh user '*'


# guardar a directoria actual
ACTUA_DIR=`pwd`  #::.  isto nao é necessário

# variaveis com ficheiros necessarios
pfile=/etc/passwd
sufix=".ficheiro" #sufixo do file de registo
file_registo=$1$sufix #var com o nome do ficheiro de output

# como só o root deve correr este script...devemos 
# parar a execuçao se o $USER nao for o root
# verificar se o utilizador tem permissoes de SU
a=`whoami`
b="root"
if [ "$a" = "$b" ]
then
    echo "--o utilizador tem as permissoes de root"
else
    echo "--você não tem as permissoes de root"
    exit 1
fi
# verificar se os argumentos são validos
if [ $# != 2 ]; then
   echo "--Usage: $0 <utilizador> <criterio_de_pesquisa>"
   # terminar
   exit 1
else
   ### os argumetos estao certos
   echo "--o número de argumentos é válido"
   # verificar se o USER existe
   echo "--a verificar se o $1 existe"
   grep "^$1:" $pfile > aux 
   if [ $? -eq 0 ]; then
      echo "--$1 é um USER válido"
      # mt bem. O $1 é valido.
      # por isso podemos começar a analise
      
      # agora podemos criar a directoria 'resultados'
      # com os com os ficheiros resultantes da analise
      
      # verificar se 'resultados' já existe..
      # se não existe.. vamos criar
      # se existe.. substitui.se os ficheiros
        
      if [ -d "$HOME/resultados" ];then 
         echo "--A directoria 'resultados' existe e vai conter"
         echo "  os dados resultantes da analise."
      else
         echo "--A directoria 'resultados' não existe mas vai"
         echo "  ser criada e irá conter os dados da analise"
         mkdir -p $HOME/resultados
      fi
        
        # calcular a HOME real do USER
        # porque pode nao se no /home... 
        # o root nao tem a home ai, o nobody nem tem home, e no linus
        # o grupo alunos nao têm a a sua home no /home...
        usr_home=`cut -d: -f6 aux`
        rm aux
        #echo $usr_home
        
      # escrever no registo:
      echo "data da analise: [ " `date` " ]" > $HOME/resultados/$file_registo
      #echo "Pesquisa em " `ls -r /home/$1 | wc -l` " ficheiros" >> $HOME/resultados/$file_registo
      echo " " >> /$HOME/resultados/$file_registo
      echo "ficheiros encontrados:" >> $HOME/resultados/$file_registo
        
        # escrever usando o ls
      #ls -r /home/$1/$2 >> $HOME/resultados/$file_registo  # listar todos os que estao no HOME
      #ls -r /home/$1/*/$2 >> $HOME/resultados/$file_registo # listar todos os que estao em directorias que derivam da HOME
      #-rasCF
        
        # .primeiro pensei em fazer a pesquisa com o 'ls' 
        # á primeira vista parece ser simples... porque era
        # so aplicar uns conhecimentos basicos de expressoes regulares
        # mas... a implementação não é funcional e tb não está correcta
        # porque o script não dá a a lista de todos os ficheiros porque o 
        # */* não está contido no * 

        # outra maneira de encontrar os ficheiros desejados
        # é utilizando o find
        #find /home/$1 $2  >> $HOME/resultados/$file_registo

        # este programa procura todos os ficheiros que
        # estáo na $HOME do $1 que tem $2 contido no seu nome
        # e ainda redirecciona o output para o ficheiro $file_registo
        # sem que seja imprimido nada no terminal
        find $usr_home -name "$2" -print >> $HOME/resultados/$file_registo
      # escrever no registo o espaço ocupado pelo $1:
      echo "data da analise: [ " `date` " ]" > $HOME/resultados/$1.MB
        echo "tamanho: " `du -ms $usr_home` >> $HOME/resultados/$1.MB      
      #;
   else
        # #f logo nao existe o $1
      echo "--$1 não existe."
        exit 1
   fi
fi  

# O nautilus so existe no GNOME no KDE deve.se substituir
# por Konqueror mas como este comando não é necessário e 
# so serviu para facilitar o debug ele é um comentario 
nautilus /$HOME/resultados &

# voltar para a directoria inicial
cd $ACTUA_DIR

Scripts recomendados

Pré Configuração do SQuiD Slackware

Redireciona

Racha-cuca (jogo)

Organizando CD’s com shell script

Compilador automatizado de kernel Linux (para BSRSoft ServerUX II, Debian, Ubuntu e Debians-like)


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts