Resultado de uma transferência de arquivo em FTP [RESOLVIDO]

1. Resultado de uma transferência de arquivo em FTP [RESOLVIDO]

josé
jgilson

(usa CentOS)

Enviado em 31/08/2017 - 11:04h

Prezados, bom dia!

A priori, não sou profundo conhecedor de Shell Script, portanto, caso tenha algo errado no código fico grato em ser corrigido.
Estou criando um código para transferir um arquivo por FTP. Todos os parâmetros da conexão são enviados pelo software...
A dúvida é: Como eu consigo o retorno dessa conexão FTP e transferência do arquivo para saber se deu "error" ou "success"? Preciso colocar esse resultado em um arquivo de log.

Arquivo de log:
===> Copying backup file to remote server 192.168.9.83 (FTP)
----- SUCCESS/ERROR

	if [ "$SERVER_TYPE" == "ftp" ]; then
log "===> Copying backup file to remote server $SERVER_HOST (FTP)"
ftp -inv $SERVER_HOST $SERVER_PORT <<-EOF
ascii
user $SERVER_USER $SERVER_PASSWORD
prompt
cd $SERVER_PATH
put $DIR_BACKUP_FILES/$BACKUP_ZIP_NAME $BACKUP_ZIP_NAME
bye
EOF
fi


Obrigado!


  


2. Re: Resultado de uma transferência de arquivo em FTP

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 31/08/2017 - 11:25h

Depois da execução, vc pode usar o if novamente:


if [ $? == 0 ]
then
echo "SUCCESS"
else
echo "ERROR"
fi


A variável $? serve pra consultar o número de saída da última execução. Se for igual a zero, foi com sucesso; se for 1 ou outro número (neste caso), deu algum erro.
--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


3. Re: Resultado de uma transferência de arquivo em FTP [RESOLVIDO]

Walker Luiz de Freitas
WalkerPR

(usa Deepin)

Enviado em 31/08/2017 - 11:26h

Eu uso scritpts para envio e captura de arquivos em FTP, os quais estão agendados no crontab.

Abaixo segue o código para que possa ter como base.



cd /pasta_local/processosFTP/cliente/retorno

ftp -ivn 10.41.0.127 << FTP
user UsuarioFTP SenhaFTP
cd "/srv/ftp/pastadestino"
bin
hash
mput EMB*.TXT
bye
EOF
FTP

EXITSTATUS=$?

if [ $EXITSTATUS != "0" ];
then
echo "$(date). . .ERRO na transmissao. . .arquivos NAO transmitidos." >> /var/log/processos/ClienteArquivoFTP.log
else
CONTEUDO=`ls EMB*.TXT | wc -l`

if [ $CONTEUDO = "0" ];
then
echo "$(date). . .processo ENVIO executado. . .a pasta cliente/retorno esta vazia." >> /var/log/processos/ClienteArquivoFTP.log
else
echo "$(date). . .processo ENVIO executado. . .$CONTEUDO arquivos de retorno foram enviados." >> /var/log/processos/ClienteArquivoFTP.log
mv EMB*.TXT ./foi
fi

fi

unset EXITSTATUS
unset CONTEUDO




4. Re: Resultado de uma transferência de arquivo em FTP [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 31/08/2017 - 11:45h

jgilson escreveu:

Prezados, bom dia!

A priori, não sou profundo conhecedor de Shell Script, portanto, caso tenha algo errado no código fico grato em ser corrigido.
Estou criando um código para transferir um arquivo por FTP. Todos os parâmetros da conexão são enviados pelo software...
A dúvida é: Como eu consigo o retorno dessa conexão FTP e transferência do arquivo para saber se deu "error" ou "success"? Preciso colocar esse resultado em um arquivo de log.

Arquivo de log:
===> Copying backup file to remote server 192.168.9.83 (FTP)
----- SUCCESS/ERROR

	if [ "$SERVER_TYPE" == "ftp" ]; then
log "===> Copying backup file to remote server $SERVER_HOST (FTP)"
ftp -inv $SERVER_HOST $SERVER_PORT <<-EOF
ascii
user $SERVER_USER $SERVER_PASSWORD
prompt
cd $SERVER_PATH
put $DIR_BACKUP_FILES/$BACKUP_ZIP_NAME $BACKUP_ZIP_NAME
bye
EOF
fi


Obrigado!


Bom dia.
Para verificar a integridade do arquivo que foi transferido eu usaria o MD5...
Pegue o md5 do arquivo na origem e depois no destino, compare,
se igual, STATUS="SUCCESS",
senão, STATUS="ERROR"
[[ $MD5_ORI = $MD5_DEST ]] && STATUS="SUCCESS" || STATUS="ERROR"
Pegando o "retorno" do comando não saberá se o arquivo é integro.

Att.:
Marcelo Oliver



5. Re: Resultado de uma transferência de arquivo em FTP

josé
jgilson

(usa CentOS)

Enviado em 31/08/2017 - 15:18h

[quote]renato_pacheco escreveu:

Obrigado Renato!
Eu já havia tentado isso, porém, a saída é sempre zero tanto em sucesso quanto falha.


6. Re: Resultado de uma transferência de arquivo em FTP [RESOLVIDO]

josé
jgilson

(usa CentOS)

Enviado em 31/08/2017 - 15:27h

WalkerPR escreveu:

Eu uso scritpts para envio e captura de arquivos em FTP, os quais estão agendados no crontab.

Abaixo segue o código para que possa ter como base.



cd /pasta_local/processosFTP/cliente/retorno

ftp -ivn 10.41.0.127 << FTP
user UsuarioFTP SenhaFTP
cd "/srv/ftp/pastadestino"
bin
hash
mput EMB*.TXT
bye
EOF
FTP

EXITSTATUS=$?

if [ $EXITSTATUS != "0" ];
then
echo "$(date). . .ERRO na transmissao. . .arquivos NAO transmitidos." >> /var/log/processos/ClienteArquivoFTP.log
else
CONTEUDO=`ls EMB*.TXT | wc -l`

if [ $CONTEUDO = "0" ];
then
echo "$(date). . .processo ENVIO executado. . .a pasta cliente/retorno esta vazia." >> /var/log/processos/ClienteArquivoFTP.log
else
echo "$(date). . .processo ENVIO executado. . .$CONTEUDO arquivos de retorno foram enviados." >> /var/log/processos/ClienteArquivoFTP.log
mv EMB*.TXT ./foi
fi

fi

unset EXITSTATUS
unset CONTEUDO



Obrigado!
Fiz o teste da mesma forma que passou mas o retorno também é sempre zero em EXITSTATUS.



7. Re: Resultado de uma transferência de arquivo em FTP [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 31/08/2017 - 16:08h

msoliver escreveu:

Bom dia.
Para verificar a integridade do arquivo que foi transferido eu usaria o MD5...
Pegue o md5 do arquivo na origem e depois no destino, compare,
se igual, STATUS="SUCCESS",
senão, STATUS="ERROR"
[[ $MD5_ORI = $MD5_DEST ]] && STATUS="SUCCESS" || STATUS="ERROR"
Pegando o "retorno" do comando não saberá se o arquivo é integro.

Att.:
Marcelo Oliver


Verdade! Dessa forma a garantia é 99% de os arquivos serem iguais (vamos considerar q 1% possa ocorrer algum conflito de hash MD5, ou seja, aquele porcento vagabundo).

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


8. Re: Resultado de uma transferência de arquivo em FTP [RESOLVIDO]

josé
jgilson

(usa CentOS)

Enviado em 04/09/2017 - 08:33h

Obrigado a todos pelas informações. Abraço!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts