shell-script-pt
[Top][All Lists]
Advanced

[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]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]