cid*_*der 7 linux shell ups ftp
我写了一个小 shell 脚本(在 CentOS 上)从我们的 APC UPS 设备下载统计数据。它工作得很好,但每天 cron 都会发送一封包含以下消息的电子邮件:
WARNING! 1 bare linefeeds received in ASCII mode File may not have transferred correctly.
Run Code Online (Sandbox Code Playgroud)
当我在 shell 上手动获取文件时,我也会收到该消息。我的脚本的 FTP 部分如下所示:
ftp -in $ftpip <<END_FTP_DOWNLOAD
user $ftpuser $ftppassword
get data.txt
bye
END_FTP_DOWNLOAD
Run Code Online (Sandbox Code Playgroud)
我怎样才能摆脱这个可能会打扰我同事的警告信息?
手动 FTP 连接如下所示。这次我尝试输入“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!
Run Code Online (Sandbox Code Playgroud)
data.txt 有 500 到 800 行,最后一行总是空的。
Mar*_*uez 11
尝试使用二进制模式而不是 ASCII 模式。它应该是这样的:
ftp -in $ftpip << END_FTP_DOWNLOAD
user $ftpuser $ftppassword
bin
get $filename
bye
END_FTP_DOWNLOAD
Run Code Online (Sandbox Code Playgroud)
小智 6
现在我找到了一个(肮脏的)解决方案:
我以二进制模式下载文本文件,然后替换插入文件中的 ^M 字符,因为它看起来像 APC UPS 基于 DOS ...
tr -d '\015' < data.txt > data-$today.txt
Run Code Online (Sandbox Code Playgroud)
如果有人想出更好的解决方案,那就太好了,但这也有效。
归档时间: |
|
查看次数: |
19319 次 |
最近记录: |