[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RES: [shell-script] Script para comparação de diretorios entre servidore
From: |
Julio Cezar Neves - DATAPREVRJ |
Subject: |
RES: [shell-script] Script para comparação de diretorios entre servidores e equiparaçao. |
Date: |
Fri, 29 Nov 2002 09:43:58 -0300 |
Olá André,
qdo vc dá a saida do ftp em um arquivo usando a opção -v (verbose), muita
informação inútil vai ser gerada neste arquivo, dando problema no diff que
vc faz posteriormente. Por outro lado, no ftp, qdo vc faz:
ls arqr arql
O resultado do ls arqr será colocado no arquivo local arql. Acho que seu
script poderia ser enxugado mais ou menos assim:
read -p "Nome da Máquina Remota: " Host
read -p "Usuário em $Host: " UName
read -sp "Senha em $Host: " PW # Desta forma vc nao expoe a senha no script
ftp -ivn $Maq > trab << FimFTP
user $UName $PW
prompt # para evitar perguntas bobas no ls
ls <caminho a ser comparado> arql
FimFTP
if grep "Transfer complete" > /dev/null ### Nao executou o ls ####
then
erro1=1
else
erro1=0
fi
Qdo vc faz um ls desta forma, o ftp não aceita a opção -p então o grep tem
que ser feito de outra forma. Onde vc fazia:
grep -v "/" ftp_$server1 > ls_file_$server1
faça
grep -v "^d" ftp_$server1 > ls_file_$server1
André, o seu programa está muito grande e pode ser enxugado muito +. Não
estou com tempo hábil para refazê-lo, mas coloco-me à sua disposição para
contato telefônico.
[ ]s,
Julio Cezar Neves
-Eu Apoio o Software Livre-
-I Support Free Software-
* +55 21 2528-7070 / 9853-4044
*address@hidden
> -----Mensagem original-----
> De: André Guerra [mailto:address@hidden]
> Enviada em: quinta-feira, 28 de novembro de 2002 18:52
> Para: address@hidden
> Assunto: [shell-script] Script para comparação de diretorios entre
> servidores e equiparaçao.
>
>
>
> 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]
>
>
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de
> programação, como perl, C etc. Quem insistir em não seguir
> esta regra será moderado sem prévio aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
http://www.listasdiscussao.cjb.net
---------------------------------------------------------------------
Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
http://br.yahoo.com/info/utos.html
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- RES: [shell-script] Script para comparação de diretorios entre servidores e equiparaçao.,
Julio Cezar Neves - DATAPREVRJ <=