Eu tenho um script a.sh
, que tem um comando sftp
:
echo "Starting to sftp..."
sftp [email protected] << END_SCRIPT
ls
mput *.csv.gz
bye
END_SCRIPT
echo "Sftp successfully."
Se eu executá-lo interativamente, a saída de log de sftp
é mostrada. No entanto, se eu configurá-lo em um crontab e redirecionar o stdout para um arquivo usando >
, haverá apenas a saída das duas instruções echo
. Como posso obter o log do comando sftp
?
EDITAR:
Eu tentei os seguintes formulários e também não funcionou.
sftp -b batch_file.txt [email protected] (redirecionamento do cron)
sftp -b batch_file.txt [email protected] > > some_file.log (redirecionar do cron + redirecionar desta linha)
Eu acho que o problema deve estar relacionado com a natureza do sftp que deve ser executado de forma interativa, como indicado na página man. Mas não consigo encontrar a solução.
Minha distribuição : Red Hat Enterprise Linux AS release 3 (Taroon Update 2)
a entrada do crontab :
52 14 * * * sh /home/xxx/testing/xxx.sh > /home/xxx/testing/xxx_'date +\%Y\%m\%d'.log
E o log é criado com um horário correspondente à entrada do crontab.
versão do ssh :
OpenSSH_3.6.1p2, SSH protocols 1.5/2.0, OpenSSL 0x0090701f
EDITAR:
Descobri que, se eu redirecionar a saída do sftp no arquivo de script para um arquivo de texto, a mensagem do sftp será registrada. Então eu removi o arquivo de log e agendei com o cron. Após a execução do cron, o arquivo de log é gerado, mas não possui mensagem do sftp. Em vez disso, ele contém apenas log de outra instrução dentro do arquivo de script.
Se eu redirecionar a saída do sftp no arquivo de script e executá-lo interativamente, o log estará perfeitamente correto. No entanto, se eu agendá-lo com o cron (sem redirecionamento na entrada crontab, simplesmente agendá-lo), o log do sftp também desaparecerá.