sexta-feira, 30 de novembro de 2012

Lista, procura e deleta arquivos

   Este scrip ele usa um vetor para verificar se existe um ou mais arquivos específicos e se existir eles são deletados e é enviado um e-mail com o log do que foi deletado e no campo assunto ainda coloquei para ir junto a data.
   Este script faz essa varredura em dois servidores e o arquivo fica no server1 e para fazer a verificação no server2 ele tem que acessar via ssh. Para isso tem que ter configurado o ssh automático, como mostrei em ssh sem precisar digitar a senha

#!/bin/bash
#CRIA O ARQUIVO DE LOG
touch /root/erro.log

#VETOR QUE INDICA E EFETUA A VERIFICACAO NAS PASTAS INFORMADAS

aDirServer1=(diretorio1 diretorio2 diretorio3 diretorio4)
echo "##################" >> /root/erro.log
echo "### SERVER1 ###" >> /root/erro.log
echo "##################" >> /root/erro.log
for sDir1 in ${aDirServer1[*]}; do
        #CONSULTA E VERIFICA SE EXISTE ALGUM ARQUIVO COM NOME TST
        ls -l /caminho-do-diretório-que -está-as-pastas/$sDir1/*tst* >> /root/erro.log
        if [ $? != 0 ]; then
                echo "$sDir1 OK" >> /root/erro.log
        else
                #SE EXISTE TST O MESMO EH DELETADO
                find /caminho-do-diretório-que -está-as-pastas/$sDir1/*tst* -exec rm -f {} \;
                echo "Removido TST $sDir1" >> /root/erro.log
        fi
done
echo "" >> /root/erro.log

#VETOR QUE INDICA E EFETUA A VERIFICACAO NAS PASTAS INFORMADAS

aDirServer2=(diretorio1 diretorio2 diretorio3 diretorio4)
echo "##################" >> /root/erro.log
echo "### Server2 ###" >> /root/erro.log
echo "##################" >> /root/erro.log
for sDir2 in ${aDirServer2[*]}; do
        #CONSULTA E VERIFICA SE EXISTE ALGUM ARQUIVO COM NOME TST
        ssh ip_server2 "ls -l /caminho-do-diretório-que -está-as-pastas/$sDir2/*tst*" >> /root/erro.log
        if [ $? != 0 ]; then
                echo "$sDir2 OK" >> /root/erro.log
        else
                #SE EXISTE TST O MESMO EH DELETADO
                ssh ip_server2 "find /caminho-do-diretório-que -está-as-pastas/$sDir2/*tst* -exec rm -f {} \;"
                echo "Removido TST $sDir2" >> /root/erro.log
        fi
done

#VERIFICA SE EXISTE A PALAVRA "TST" DENTRO DO ARQUIVO.

cat /root/erro.log |grep tst
#SE EXISTIR "TST" NO ARQUIVO O MESMO EH ENVIADO POR EMAIL. SE NAO EXISTIR O SCRIPT EH FINALIZADO.
if [ $? != 0  ]; then
                echo "Nao tem TST" >> /root/erro.log
        else
                #ENVIA EMAIL COM LOG
                mail -s "assunto-do-email de `date +%d/%m/%Y`" digitar-email-que-vai-receber-o-log < /root/erro.log
fi

#DELETA O ARQUIVO DE LOG

rm -f /root/erro.log


Informações complementares:
  1. Para informações sobre vetores em: http://www.vivaolinux.com.br/artigo/Trabalhar-com-array-no-Bash?pagina=1
  2. Para informações sobre for, if entre outros comandos de condição existe muitos tutoriais na internet, só pesquisar no google.

Nenhum comentário:

Postar um comentário