Вопрос: FTP: Как избавиться от «ВНИМАНИЕ! 1 голая линейная подача, полученная в режиме ASCII "сообщение?


Я написал небольшой скрипт оболочки (на CentOS) для загрузки статистики с нашего устройства UPS APC. Он отлично работает, но каждый день cron отправляет электронное письмо с этим сообщением:

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

Я также получаю это сообщение, когда я получаю файл вручную в оболочке. Часть FTP моего сценария выглядит так:

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

Как я могу избавиться от этого предупреждающего сообщения, которое может помешать моим коллегам?

Ручное 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!

Data.txt имеет от 500 до 800 строк, а последняя строка всегда пуста.


7
2018-02-03 08:47


Источник


Если кто-то наткнется на это из-за отсутствия FTP в High Sierra и побежал brew install inetutils, обязательно ознакомьтесь со следующим комментарием: apple.stackexchange.com/questions/299758/... - KLVTZ


Ответы:


Попробуйте использовать двоичный режим вместо режима ASCII. Это должно быть что-то вроде:

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

10
2018-05-07 08:03



это решение работает отлично и кажется более надежным - Labynocle


Теперь я нашел (грязное) решение:

Я загружаю текстовый файл в режиме BINARY, а затем заменяю символ ^ M, который вставлен в файл, так как он похож на ИБП APC на основе DOS ...

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

Если кто-то придумает лучшее решение, было бы здорово, но это тоже работает.


6
2018-02-03 09:42