0

即使在文件传输过程中发生错误,大多数 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 KB/秒)”?

4

4 回答 4

1

当返回错误代码时,消息是否只包含错误代码而后面没有文本?如果是这样,使用行尾锚 $ 将起作用:

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
于 2009-06-03T17:18:10.750 回答
1

使用正则表达式的 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 错误代码和一些在客户端。它使用前瞻表达式 '(?! ...)' 来测试文字“收到的字节数”是否不存在,这可以解决您的需求 - 以及我的需求。;-)

表达式远非完美,可以根据您的需要进行扩展。

于 2016-09-12T11:18:13.417 回答
0

我想你必须在你的模式中更具体一点,即在错误代码之后将消息的开头放入模式中。

于 2009-06-03T13:36:12.307 回答
0

使用wgetcurl。它们都支持 ftp,以及 http 和 https,并将返回所需的退出状态。它们也是开源的。

于 2009-06-03T18:54:54.390 回答