[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Script para compara��o de diretorios entre servidores e equipara�ao.
From: |
André Guerra |
Subject: |
Script para comparação de diretorios entre servidores e equiparaçao. |
Date: |
Thu, 28 Nov 2002 17:52:23 -0300 (ART) |
Senhores, segue um script que gera uma listagem de um servidor local, outra
listagem de um servidor remoto, compara o servidor local com o remoto e apaga
no servidor local o que tem a mais e baixa o que esta faltando...
mas não está igualando, apagando o que tem a mais...alguem tem uma ideia?
#!/bin/bash
server2="nome do servidor"
server1="nome do servidor"
user1="senha"
passw1="senha"
path1="caminho a ser comparado"
path2="caminho a ser comparado"
email="email que recebera relatorio"
typeset -i erro1 aux total_ok total_deleta total_erro total_deleta_erro
# Gerando lista de arquivos do Server1
echo "open $server1" > conecta_$server1
echo "user $user1 $passw1" >> conecta_$server1
echo "as" >> conecta_$server1
echo "cd $path1" >> conecta_$server1
echo "ls -p" >> conecta_$server1
echo "bye" >> conecta_$server1
ftp -nv < conecta_$server1 > ftp_$server1 2>/dev/null
aux=`grep "Transfer complete" ftp_$server1 | wc -l`
if [ $aux -eq 0 ] ### Nao executou o ls ####
then
erro1=1
else
erro1=0
fi
grep -v "/" ftp_$server1 > ls_file_$server1
grep "_" ls_file_$server1 > ls_aux
grep "\." ls_aux > pacotes_all_$server1
cat pacotes_all_$server1 | grep ".fpbd" > pacotes_isds_$server1
touch pacotes_$server1
diff pacotes_all_$server1 pacotes_isds_$server1 | grep "<" > pacotes_aux
cat pacotes_aux | while read sinal pacote
do
echo $pacote >> pacotes_$server1
done
rm pacotes_aux
rm pacotes_all_$server1
rm pacotes_isds_$server1
rm ls_aux
rm conecta_$server1
rm ls_file_$server1
###
## Gerando lista de arquivos do Server2
ls -1 -p $path2 > ls_all_$server2
grep -v "/" ls_all_$server2 > ls_file_$server2
grep "_" ls_file_$server2 > ls_aux
grep "\." ls_aux > pacotes_$server2
rm ls_aux
rm ls_all_$server2
rm ls_file_$server2
if [ $erro1 -eq 0 ]
then
sort -io pacotes_$server1 pacotes_$server1 2>/dev/null
sort -io pacotes_$server2 pacotes_$server2 2>/dev/null
#Pacotes a serem deletados nesta TMR
diff pacotes_$server1 pacotes_$server2 | grep ">" > diferenca2da1
echo "************** Pacotes deletados na $server2 ****************" >
informacoes_nivelamento_deleta
echo "" >> informacoes_nivelamento_deleta
total_deleta=0
total_deleta_erro=0
if [ -s diferenca2da1 ]
then
cat diferenca2da1 | while read sinal pacote
do
rm $path2/$pacote 2>/dev/null
if [ $? -eq 0 ]
then
total_deleta=$total_deleta+1
echo "$sinal $pacote" >> informacoes_nivelamento_deleta
else
total_deleta_erro=$total_deleta_erro+1
echo "$sinal $pacote *************** nao conseguiu ser deletado " >>
informacoes_nivelamento_deleta
fi
done
fi
echo "Total de pacotes deletados na $server2: $total_deleta" >>
informacoes_nivelamento_deleta
echo "" >> informacoes_nivelamento_deleta
echo "Total de pacotes que NAO conseguiram ser deletados na $server2:
$total_deleta_erro" >> informacoes_nivelamento_deleta
# Pacotes a serem recuperados na server1:
diff pacotes_$server1 pacotes_$server2 | grep "<" > diferenca1da2
echo "" >> informacoes_nivelamento_erro
echo "" >> informacoes_nivelamento_ok
echo "" >> informacoes_nivelamento_erro
echo "" >> informacoes_nivelamento_ok
echo "" >> informacoes_nivelamento_erro
echo "" >> informacoes_nivelamento_ok
echo "************** Pacotes com erro de recuperacao na $server2
****************" >> informacoes_nivelamento_erro
echo "************** Pacotes com sucesso de recuperacao na $server2
****************" >> informacoes_nivelamento_ok
total_ok=0
total_erro=0
if [ -s diferenca1da2 ]
then
cat diferenca1da2 | while read sinal pacote
do
echo "open $server1" > conecta_$server1
echo "user $user1 $passw1" >> conecta_$server1
echo "bin" >> conecta_$server1
echo "cd $path1" >> conecta_$server1
echo "lcd $path2" >> conecta_$server1
echo "get $pacote" >> conecta_$server1
echo "bye" >> conecta_$server1
rm ftp_$server1
ftp -nv < conecta_$server1 > ftp_$server1
aux=`grep "Transfer complete" ftp_$server1 | wc -l`
if [ $aux -eq 0 ]
then
total_erro=$total_erro+1
echo "$sinal $pacote" >> informacoes_nivelamento_erro
else
chmod 775 $path2/$pacote
total_ok=$total_ok+1
echo "$sinal $pacote" >> informacoes_nivelamento_ok
fi
done
fi
echo "" >> informacoes_nivelamento_erro
echo "Total de pacotes que NAO foram recuperados: $total_erro" >>
informacoes_nivelamento_erro
echo "" >> informacoes_nivelamento_ok
echo "Total de pacotes recuperados do $server1: $total_ok" >>
informacoes_nivelamento_ok
## Concatenando todos os relatorios para ser enviado via e-mail
echo "Relatorio sobre todos os pacotes enviados/deletados para a TMR
$server2" > informacoes_nivelamento
echo "" > informacoes_nivelamento
echo "" > informacoes_nivelamento
echo "" > informacoes_nivelamento
cat informacoes_nivelamento_deleta informacoes_nivelamento_erro
informacoes_nivelamento_ok >> informacoes_nivelamento
cat informacoes_nivelamento | mail -s "ISSI - Nivelamento de pacotes entre o
$server1 e o $server2" $email
rm -fR ls_$server1 2>/dev/null
rm -fR ls_$server2 2>/dev/null
rm -fR pacotes_$server2 2>/dev/null
rm -fR pacotes_$server1 2>/dev/null
rm -fR diferenca1da2 2>/dev/null
rm -fR diferenca2da1 2>/dev/null
rm -fR conecta_$server1 2>/dev/null
rm -fR informacoes_nivelamento 2>/dev/null
rm -fR informacoes_nivelamento_ok 2>/dev/null
rm -fR informacoes_nivelamento_erro 2>/dev/null
rm -fR informacoes_nivelamento_deleta 2>/dev/null
else
cat ftp_$server1 | mail -s "ISSI - Erro ao acessar a $server1 para acertar
diferencas de pacotes." $email
fi
rm -fR ftp_$server1
---------------------------------
Yahoo! Acesso Grátis
Internet rápida, grátis e fácil. Faça o download do discador agora mesmo.
[As partes desta mensagem que não continham texto foram removidas]