Ajuda para gravar log em caso de erro ao acessar um FTP

1. Ajuda para gravar log em caso de erro ao acessar um FTP

Giovani
giovanit

(usa Ubuntu)

Enviado em 06/02/2018 - 08:42h

Olá senhores.

Possuo o script listado abaixo para envio de alguns backups para um FTP. Atualmente esse script escreve um arquivo que indica echo "[$DATA $HORA] $ARQUIVO enviado com sucesso ao FTP" >> $LOG ao final da execução desse script. No entanto se a conexão foi bem sucedida ou não ele gera a mesma mensagem.
Gostaria da ajuda se vcs em como manter essa mesma mensagem se a conexão foi bem sucedida e uma mensagem de erro caso a conexão não tenha sido feita com o FTP.

FTPSERVER="linkFTP"
USERNAME="user"
PASSWORD="senha"
LOCALDIR="/pasta"
DATA=`date +%d`/`date +%m`/`date +%Y`
HORA=`date +%H`:`date +%M`:`date +%S`

DIRETORIO=$1
ARQUIVO=$2
DIA=$3
LOG=$4

# conecte-se ao servidor FTP e envie o arquivo
echo "conectando no servidor FTP..."

pftp -ivn $FTPSERVER << FTP
user $USERNAME $PASSWORD


echo "conectando na diretorio Servidor_compartilhado"

cd $LOCALDIR

mkdir $DIA

cd $DIA

echo "Confirmando Diretorio..."
ls -l

#Upando Backup
echo "Upando arquivo...................................."
lcd $DIRETORIO
mput $ARQUIVO

echo"listando arquivos"
ls -l


bye
EOF
FTP
echo "[$DATA $HORA] $ARQUIVO enviado com sucesso ao FTP" >> $LOG



  


2. Re: Ajuda para gravar log em caso de erro ao acessar um FTP

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 06/02/2018 - 09:57h

Claro q ele vai enviar sempre a mesma mensagem! Vc não colocou nenhuma condição se a aplicação foi executada bem sucedida ou não. O correto a fazer é utilizar a variável $?, q indica se foi executado com sucesso (0) ou com erro (1). Nesse script seu, deveria ser assim:


FTPSERVER="linkFTP"
USERNAME="user"
PASSWORD="senha"
LOCALDIR="/pasta"
DATA=`date +%d`/`date +%m`/`date +%Y`
HORA=`date +%H`:`date +%M`:`date +%S`

DIRETORIO=$1
ARQUIVO=$2
DIA=$3
LOG=$4

# conecte-se ao servidor FTP e envie o arquivo
echo "conectando no servidor FTP..."

pftp -ivn $FTPSERVER << FTP
user $USERNAME $PASSWORD


echo "conectando na diretorio Servidor_compartilhado"

cd $LOCALDIR

mkdir $DIA

cd $DIA

echo "Confirmando Diretorio..."
ls -l

#Upando Backup
echo "Upando arquivo...................................."
lcd $DIRETORIO
mput $ARQUIVO

echo"listando arquivos"
ls -l


bye
FTP
if [ $? == 0 ]
then
echo "[$DATA $HORA] $ARQUIVO enviado com sucesso ao FTP" >> $LOG
else
echo "[$DATA $HORA] $ARQUIVO enviado com erros ao FTP" >> $LOG
fi


--
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: Ajuda para gravar log em caso de erro ao acessar um FTP

Giovani
giovanit

(usa Ubuntu)

Enviado em 06/02/2018 - 10:19h

Sensacional Renato.

Não conhecia esse tipo de condição. Muito obrigado pela ajuda.
Testei aqui alterando a senha e até mesmo o link de acesso ao FTP, em todos os casos a mensagem de que o arquivo foi enviado com sucesso foi apresentada.


4. Re: Ajuda para gravar log em caso de erro ao acessar um FTP

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 07/02/2018 - 18:41h

Complementando a dica do Renato:
if ls -1 "$ARQUIVO;then
#ARQUIVO EXISTE
echo "[$DATA $HORA] $ARQUIVO enviado com sucesso ao FTP" >> $LOG
else
#ARQUIVO NÃO EXISTE
echo "[$DATA $HORA] $ARQUIVO enviado com erros ao FTP" >> $LOG
fi

O condicional é "montado" com o resultado do comando "ls -1 $ARQUIVO"

marcelo oliver


5. Re: Ajuda para gravar log em caso de erro ao acessar um FTP

Giovani
giovanit

(usa Ubuntu)

Enviado em 08/02/2018 - 10:08h

msoliver escreveu:

Complementando a dica do Renato:
if ls -1 "$ARQUIVO;then
#ARQUIVO EXISTE
echo "[$DATA $HORA] $ARQUIVO enviado com sucesso ao FTP" >> $LOG
else
#ARQUIVO NÃO EXISTE
echo "[$DATA $HORA] $ARQUIVO enviado com erros ao FTP" >> $LOG
fi

O condicional é "montado" com o resultado do comando "ls -1 $ARQUIVO"

marcelo oliver


Isso substituiria o código em que o Renato mencionou ou final do código?


6. Re: Ajuda para gravar log em caso de erro ao acessar um FTP

Slackjeff
slackjeff

(usa Slackware)

Enviado em 08/02/2018 - 11:28h

Evite o uso da variavel especial '?' se adicionar um echo ou qualquer outra coisa antes do teste com '?' vai mudar o status de saida.
utilize sempre o bloco if.

if ! comando; then
cmd
fi

THE MAGIC SHELL PROGRAMMER.

Slackware user since ~2008
Meu canal no youtube:
https://goo.gl/ZcWSaB

Meu Site:
http://slackjeff.github.io/

Meus Programas estão aqui:
https://notabug.org/jeffersonrocha








7. Re: Ajuda para gravar log em caso de erro ao acessar um FTP

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 08/02/2018 - 21:53h

giovanit escreveu:

msoliver escreveu:

Complementando a dica do Renato:
if ls -1 "$ARQUIVO;then
#ARQUIVO EXISTE
echo "[$DATA $HORA] $ARQUIVO enviado com sucesso ao FTP" >> $LOG
else
#ARQUIVO NÃO EXISTE
echo "[$DATA $HORA] $ARQUIVO enviado com erros ao FTP" >> $LOG
fi

O condicional é "montado" com o resultado do comando "ls -1 $ARQUIVO"

marcelo oliver


Isso substituiria o código em que o Renato mencionou ou final do código?

Boa noite Gionanit.
Essa "parte" que postei, substitui o final do código,
A partir da linha "ls -l" (incluindo a mesma).
Att.:
Marcelo Oliver



8. Re: Ajuda para gravar log em caso de erro ao acessar um FTP

Giovani
giovanit

(usa Ubuntu)

Enviado em 09/02/2018 - 11:08h

Tentei de 2 formas,
1º Sempre é gravada a mensagem de erro, pois como já saiu do FTP ele não localiza o arquivo e vai para a segunda mensagem.

FTPSERVER="linkFTP"
USERNAME="user"
PASSWORD="senha"
LOCALDIR="/pasta"
DATA=`date +%d`/`date +%m`/`date +%Y`
HORA=`date +%H`:`date +%M`:`date +%S`

DIRETORIO=$1
ARQUIVO=$2
DIA=$3
LOG=$4

# conecte-se ao servidor FTP e envie o arquivo
echo "conectando no servidor FTP..."

pftp -ivn $FTPSERVER << FTP
user $USERNAME $PASSWORD


echo "conectando na diretorio Servidor_compartilhado"

cd $LOCALDIR

mkdir $DIA

cd $DIA

echo "Confirmando Diretorio..."
ls -l

#Upando Backup
echo "Upando arquivo...................................."
lcd $DIRETORIO
mput $ARQUIVO

echo"listando arquivos"
ls -l

bye
EOF
FTP
ls -l $ARQUIVO;then
echo "[$DATA $HORA] $ARQUIVO enviado com sucesso ao FTP." >> $LOG
else
echo "[$DATA $HORA] Erro ao enviar o $ARQUIVO ao FTP." >> $LOG
fi


2º Alterei a condição para dentro do FTP, no log não é gravado nada e quando executo o script e chega nessa parte diz comando invalido.

FTPSERVER="linkFTP"
USERNAME="user"
PASSWORD="senha"
LOCALDIR="/pasta"
DATA=`date +%d`/`date +%m`/`date +%Y`
HORA=`date +%H`:`date +%M`:`date +%S`

DIRETORIO=$1
ARQUIVO=$2
DIA=$3
LOG=$4

# conecte-se ao servidor FTP e envie o arquivo
echo "conectando no servidor FTP..."

pftp -ivn $FTPSERVER << FTP
user $USERNAME $PASSWORD


echo "conectando na diretorio Servidor_compartilhado"

cd $LOCALDIR

mkdir $DIA

cd $DIA

echo "Confirmando Diretorio..."
ls -l

#Upando Backup
echo "Upando arquivo...................................."
lcd $DIRETORIO
mput $ARQUIVO

echo"listando arquivos"
ls -l $ARQUIVO;then
echo "[$DATA $HORA] $ARQUIVO enviado com sucesso ao FTP." >> $LOG
else
echo "[$DATA $HORA] Erro ao enviar o $ARQUIVO ao FTP." >> $LOG
fi

bye
EOF
FTP




9. Re: Ajuda para gravar log em caso de erro ao acessar um FTP

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 09/02/2018 - 14:28h

Na primeira linha do seu script, insira a seguinte linha:


#!/bin/bash -x


Execute seu script outra vez e verifique em q parte o erro ocorre. Achando, conserte-o, remova a primeira linha e tente usando a condição q passei pra vc (if ...).
--
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


10. Re: Ajuda para gravar log em caso de erro ao acessar um FTP

Giovani
giovanit

(usa Ubuntu)

Enviado em 09/02/2018 - 15:19h

renato_pacheco escreveu:

Na primeira linha do seu script, insira a seguinte linha:


#!/bin/bash -x


Execute seu script outra vez e verifique em q parte o erro ocorre. Achando, conserte-o, remova a primeira linha e tente usando a condição q passei pra vc (if ...).
--
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


Não apresentou nenhum erro. Porém ele grava como Sucesso enviando ou não o arquivo.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts