Обработка кодов ошибок FTP - PullRequest
0 голосов
/ 03 июня 2009

Большинство FTP-клиентов возвращают код выхода «0», даже если во время передачи файла произошла ошибка.

Я столкнулся с проблемой, когда я проверяю коды ошибок. Но мой сценарий получает код ошибки в отправленных байтах, и проверка завершается неудачей.

Я попробовал это так:

if [[ egrep '^202 |^421 |^426 |^450 |^500 |^501 |^503 |^530 |^550 |^553 |^666 |^777 |^999 ' test.log ]] echo " Error in FTP !!! " else echo " FTP Successful !!!" fi

Может ли кто-нибудь помочь мне, как отделить код ошибки от других чисел, которые идут вместе с сообщением "отправлено байт", например "220 байтов отправлено за 0,001 секунды (220 Кбайт / с)"?

Ответы [ 4 ]

1 голос
/ 12 сентября 2016

Используя Perl-вариант регулярных выражений, вы можете использовать что-то вроде этого:

if [[ grep -P '^(([45][0-9][0-9] )(?-i)(?!bytes received))|\?|(\w+: )|([Nn]ot connected)' test.log ]] echo " Error in FTP !!! " else echo " FTP Successful !!!" fi

Тесты регулярных выражений для всех видов общих кодов ошибок FTP и некоторых на стороне клиента. Он использует упреждающее выражение «(?!…)» Для проверки на отсутствие буквальных «полученных байтов», которые решают ваше требование - и мое тоже. ; -)

Выражение далеко от совершенства и может быть расширено в соответствии с вашими потребностями.

1 голос
/ 03 июня 2009

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

if [[ egrep '^202$ |^421$ |^426$ |^450$ |^500$ |^501$ |^503$ |^530$ |^550$ |^553$ |^666$ |^777$ |^999$ ' test.log ]] echo " Error in FTP !!! " else echo " FTP Successful !!!" fi
0 голосов
/ 03 июня 2009

Используйте wget или curl. Они оба поддерживают ftp, а также http и https и возвращают желаемый статус выхода. И оба они с открытым исходным кодом.

0 голосов
/ 03 июня 2009

Полагаю, вам нужно быть более конкретным в своем шаблоне, то есть взять начало сообщения после кода ошибки в шаблон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...