Upload em FTP não funciona pelo cron

1. Upload em FTP não funciona pelo cron

Carlos Eduardo de Laia Santos
carlosesantos

(usa Linux Mint)

Enviado em 03/03/2015 - 14:59h

Boa tarde a todos!

Aqui na empresa onde trabalho, preciso usar o cron para agendar uma cópia de arquivos, essa cópia será feita em um servidor ftp, gostaria de uma ajuda com um problema que ando encontrando!!
SERVIDOR LOCAL > SERVIDOR FTP
seguinte, quando eu rodo este script na mão ele funciona perfeitamente, realizando o upload dos arquivos sem problemas, trazendo a seguinte mensagem para cada arquivo que é enviado:

local: Para_2015022800_96.dat remote: Para_2015022800_96.dat
227 Entering Passive Mode (177,74,62,129,49,120).
125 Data connection already open; Transfer starting.
226 Transfer complete.
650688 bytes sent in 2.9 seconds (2.2e+02 Kbytes/s)
221
----------------------------------

Agora quando eu agendo a tarefa para rodar no cron ele não funciona, assim eu coloquei para salvar em um txt o que está ocorrendo e ele simplesmente me traz a mensagem:

Connected to 177.74.62.129 (177.74.62.129).
220 Microsoft FTP Service
331 Password required for mgtemposema.
230 User mgtemposema logged in.
Interactive mode off.
221
---------------------------------
Vcs saberiam me dizer se isto pode ser por falta de alguma path que não foi instalada?
Segue abaixo o agendamento no cron e o codigo em questão:
Se souberem me ajudar nesse desafio. Desde já agradeço pela atenção de todos!!!

0,30 7 * * * /home/operacao/scripts/vale/ftp.sh -q > /home/operacao/scripts/vale/erro_no_meu_script_de_FTP.log


#!/bin/bash

data=$(date +%Y%m%d)

HOST='177.74.62.129'
USER='usuario'
PASSWD='senha'
filename="Para_*.dat"
dirname="/home/operacao/scripts/vale"

ftp -v -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
prompt
mput $filename
quit
END_SCRIPT

rm $dirname/$filename

exit 0









  


2. Re: Upload em FTP não funciona pelo cron

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 03/03/2015 - 15:03h

Em vez d vc mandar apenas a STDOUT pro arquivo, mande os erros tb pra vc saber quais foram os erros:


*/1 * * * * /home/operacao/scripts/vale/ftp.sh -q 2>&1 /home/operacao/scripts/vale/erro_no_meu_script_de_FTP.log


Olhe, tb, os logs do cron pra saber se o seu script realmente foi executado.

Obs.: coloquei ali pra ser executado d min em min pra vc fazer os testes.


3. Re: Upload em FTP não funciona pelo cron

Carlos Eduardo de Laia Santos
carlosesantos

(usa Linux Mint)

Enviado em 03/03/2015 - 15:41h

Então renato_pacheco, eu fiz aki o procedimento, o mais estranho é que no log do cron não fez nem menção ao script, e so me tira uma duvida, esta rotina que vc criou, qual seria o significado de 2>&1
Pois ao add ela não gerou mais log, ai quando retirei e deixei somente o > gerou.
O que estou estranhando mais neste script é que apesar dele não aparecer como executado nos logs do cron, ele executou a operação de remover, uma vez que os arquivos foram apagados, só não os enviou para o servidor ftp.


4. Re: Upload em FTP não funciona pelo cron

Paulo
paulo1205

(usa Ubuntu)

Enviado em 03/03/2015 - 17:10h

Eu acho que o renato quis dizer

*/1 * * * * /home/operacao/scripts/vale/ftp.sh -q > /home/operacao/scripts/vale/erro_no_meu_script_de_FTP.log 2>&1 


O primeiro “>” redireciona a saída de dados normal, que por convenção usa o descritor de arquivos número 1. O redirecionamento “2>&1” manda redirecionar o descritor associado à saída de erros, que tem o número 2, para o mesmo lugar onde estiver o descritor 1.

Note que a ordem dos redirecionamentos importa: se você trocar a ordem, ele vai primeiro fazer a equivalência de 2 com 1, e depois mudar o apontamento do descritor 1, desfazendo a equivalência.


5. Re: Upload em FTP não funciona pelo cron

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 03/03/2015 - 18:09h

paulo1205 escreveu:

Eu acho que o renato quis dizer

*/1 * * * * /home/operacao/scripts/vale/ftp.sh -q > /home/operacao/scripts/vale/erro_no_meu_script_de_FTP.log 2>&1 


O primeiro “>” redireciona a saída de dados normal, que por convenção usa o descritor de arquivos número 1. O redirecionamento “2>&1” manda redirecionar o descritor associado à saída de erros, que tem o número 2, para o mesmo lugar onde estiver o descritor 1.

Note que a ordem dos redirecionamentos importa: se você trocar a ordem, ele vai primeiro fazer a equivalência de 2 com 1, e depois mudar o apontamento do descritor 1, desfazendo a equivalência.


Valeu o conserto, paulo1205! Era isso, toda vez eu confundo...




6. Re: Upload em FTP não funciona pelo cron

Paulo
paulo1205

(usa Ubuntu)

Enviado em 04/03/2015 - 02:34h

renato_pacheco escreveu:

Valeu o conserto, paulo1205! Era isso, toda vez eu confundo...


Não que sirva de consolo, mas eu também levei umbocado de tempo até entender isso.

E o pior é que tem uma exceção: se você quiser redirecionar os dois descritores para um pipe,a ordem se inverte: primeiro você unifica a saída, e depois coloca o pipe.

ls 2>&1 | less  # Saída padrão e de erro de ls para less
ls | less 2>&1 # Saida padrão de ls para less; saída de erro de ls
# intocada; saída de erro de less para saída padrão de less



7. Re: Upload em FTP não funciona pelo cron

Carlos Eduardo de Laia Santos
carlosesantos

(usa Linux Mint)

Enviado em 04/03/2015 - 14:59h

Bom seguindo o padrão que vcs me passaram, o txt veio somente com estas linhas:

Connected to 177.74.62.129 (177.74.62.129).
220 Microsoft FTP Service
331 Password required for mgtemposema.
230 User mgtemposema logged in.
Interactive mode off.
221

Não consigo entender o fato dele rodar na mão e não rodar no cron automaticamente!!!


8. Re: Upload em FTP não funciona pelo cron

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 04/03/2015 - 15:00h

E nos logs do cron? Não aparece nenhuma mensagem d erro, não?



9. Re: Upload em FTP não funciona pelo cron

Carlos Eduardo de Laia Santos
carlosesantos

(usa Linux Mint)

Enviado em 04/03/2015 - 15:02h

A unica coisa que eu encontrei sobre o script no log do cron foi isto:

Subject: Cron <operacao@ctgmgtsrv03> /home/operacao/scripts/vale/teste.sh -q > /home/operacao/scripts/vale/erro_no_meu_script_de_FTP.log
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env: <PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/bin/grads>
X-Cron-Env: <MAILTO=operacao>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/operacao>
X-Cron-Env: <LOGNAME=operacao>
X-Cron-Env: <USER=operacao>

rm: cannot remove `/home/operacao/scripts/vale/Para_*.dat': No such file or directory


10. Re: Upload em FTP não funciona pelo cron

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 04/03/2015 - 15:09h

carlosesantos escreveu:

A unica coisa que eu encontrei sobre o script no log do cron foi isto:

Subject: Cron <operacao@ctgmgtsrv03> /home/operacao/scripts/vale/teste.sh -q > /home/operacao/scripts/vale/erro_no_meu_script_de_FTP.log
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env: <PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/bin/grads>
X-Cron-Env: <MAILTO=operacao>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/operacao>
X-Cron-Env: <LOGNAME=operacao>
X-Cron-Env: <USER=operacao>

rm: cannot remove `/home/operacao/scripts/vale/Para_*.dat': No such file or directory


Pelo q percebi, o cron não consegue identificar o caractere coringa (asterisco) e, sim, o asterisco literal, entendendo q não existe no diretório tal arquivo. O q contém entre Para_ e .dat?




11. Re: Upload em FTP não funciona pelo cron

Carlos Eduardo de Laia Santos
carlosesantos

(usa Linux Mint)

Enviado em 04/03/2015 - 15:14h

Existe simplesmente uma data entre o nome, como esta: Para_2015030300_00.dat
So que são gerados 5 arquivos por dia, com pequenas alterações no nome. O estranho é que ele aponta ali que não consegue remover, mas quando vou na pasta temporaria, os arquivos foram excluídos.


12. Re: Upload em FTP não funciona pelo cron

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 04/03/2015 - 17:40h

Olhando aqui em outros sites, vc esqueceu d por o parâmetro -i no seu comando ftp. Tente colocá-lo e veja se funciona. Achei um exemplo em um site com o mesmo caso seu.

http://www.cyberciti.biz/faq/linux-unix-autologin-cron-ftp-script/




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts