FTP:如何摆脱“警告! 在ASCII模式下收到1个空白换行符“消息?

我写了一个小小的shell脚本(在CentOS上)从我们的APC UPS设备下载统计数据。 它工作的很好,但每天cron发送一封电子邮件与这个消息:

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

当我在shell上手动获取文件时,我也会得到这个消息。 我的脚本的FTP部分如下所示:

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

我怎样才能摆脱这可能会打扰我的同事的警告信息呢?

手动FTP连接看起来像这样。 我这次尝试input“ascii”:

 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! 

data.txt有500到800行,最后一行是空的。

尝试使用二进制模式而不是ASCII模式。 它应该是这样的:

 ftp -in $ftpip << END_FTP_DOWNLOAD user $ftpuser $ftppassword bin get $filename bye END_FTP_DOWNLOAD 

现在我发现了一个(肮脏的)解决scheme:

我以BINARY模式下载文本文件,然后replace插入文件的^ M字符,因为它看起来像APC UPS基于DOS …

 tr -d '\015' < data.txt > data-$today.txt 

如果有人提出更好的解决scheme,那将是很好的,但这也是有效的。