analise
Publicado por antonio mauricio sousa 16/05/2005
[ Hits: 6.160 ]
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
#!/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
DioPSI - Script multidistro para instalar programas
Renomear legendas srt de filmes e séries
Administração de Servidor FTP + MySQL
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Não to conseguindo resolver este problemas ao instalar o playonelinux (1)
Excluir banco de dados no xampp (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta