analise
Publicado por antonio mauricio sousa 16/05/2005
[ Hits: 6.036 ]
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
Pré Configuração do SQuiD Slackware
Organizando CD’s com shell script
Compilador automatizado de kernel Linux (para BSRSoft ServerUX II, Debian, Ubuntu e Debians-like)
Nenhum comentário foi encontrado.
Atenção a quem posta conteúdo de dicas, scripts e tal (1)
Manutenção de sistemas Linux Debian e derivados com apt-get, apt, aptitude e dpkg
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
Como Atualizar Fedora 39 para 40
Instalar Google Chrome no Debian e derivados
Consertando o erro do Sushi e Wayland no Opensuse Leap 15
Instalar a última versão do PostgreSQL no Lunix mantendo atualizado
Flathub na sua distribuição Linux e comandos básicos de gerenciamento
Problema Envio email GLPI Versao 10.0.15 (0)
Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel... (25)
Impressora Canon Ip 1800 (Drivers) 64 bit (1)
[Shell Script] Script para desinstalar pacotes desnecessários no OpenSuse
[Shell Script] Script para criar certificados de forma automatizada no OpenVpn
[Shell Script] Conversor de vídeo com opção de legenda
[C/C++] BRT - Bulk Renaming Tool
[Shell Script] Criação de Usuarios , Grupo e instalação do servidor de arquivos samba