analise

Publicado por antonio mauricio sousa 16/05/2005

[ Hits: 6.175 ]

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

Controle da bateria

Redimensionador automático de imagens

backup Firebird em DVD

BKP Completo Sem compactação (com exclusao)

Encurtador de URLs pelo terminal através do Google


  

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