FTP: Como se livrar de “AVISO! 1 alimentação de linha nua recebida no modo ASCII ”mensagem?

7

Eu escrevi um pequeno script de shell (no CentOS) para baixar as estatísticas do nosso dispositivo APC UPS. Funciona muito bem, mas o cron diário envia um email com esta mensagem:

WARNING! 1 bare linefeeds received in ASCII mode File may not have transferred correctly.

Eu também recebo essa mensagem quando obtenho o arquivo manualmente no shell. A parte FTP do meu script é assim:

ftp -in $ftpip <<END_FTP_DOWNLOAD
user $ftpuser $ftppassword
get data.txt
bye
END_FTP_DOWNLOAD

Como posso me livrar dessa mensagem de aviso que pode atrapalhar meus colegas?

A conexão FTP manual é semelhante a esta. Eu tentei digitar "ascii" desta vez:

220 AP9617 Network Management Card AOS v2.6.4 FTP server ready.
Name (192.168.0.50:myusername): username
331 User name okay, need password.
Password:
230 User logged in, proceed.
ftp> ascii
200 TYPE Command okay.
ftp> get data.txt
local: data.txt remote: data.txt
227 Entering Passive Mode (192,168,0,50,161,31).
125 Data connection already open; transfer starting.
WARNING! 1 bare linefeeds received in ASCII mode
File may not have transferred correctly.
226 Closing data connection.
131468 bytes received in 19,3 secs (6,6 Kbytes/sec)
ftp> bye
221 Thank you for using APC products!

O data.txt tem entre 500 e 800 linhas e a última linha está sempre vazia.

    
por cider 03.02.2012 / 09:47

2 respostas

10

Tente usar o modo binário em vez do modo ASCII. Deve ser algo como:

ftp -in $ftpip << END_FTP_DOWNLOAD
user $ftpuser $ftppassword
bin
get $filename
bye
END_FTP_DOWNLOAD
    
por 07.05.2013 / 10:03
6

Agora eu encontrei uma solução (suja):

Eu faço o download do arquivo de texto no modo BINARY e, em seguida, substituo o caractere ^ M que é inserido no arquivo, pois parece que o no-break da APC é baseado no DOS ...

tr -d '5' < data.txt > data-$today.txt

Se alguém encontrar uma solução melhor, seria ótimo, mas isso também funciona.

    
por 03.02.2012 / 10:42