analise
Publicado por antonio mauricio sousa 16/05/2005
[ Hits: 6.412 ]
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
Backup para fita dat em Dialog
Backup MySQL Incremental via RSYNC/FTP
Script que pergunta o período para geração do relatório do SARG
cliente do need for speed underground
Backup c/ LOG, Grava CD e manda LOG p/ email
Nenhum comentário foi encontrado.
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
Pergunta: Meu teclado não está respondendo direito como e consertar? (2)
Secure boot, artigo interessante, nada técnico. (6)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (0)









