【问题标题】:Handling FTP error codes处理 FTP 错误代码
【发布时间】:2009-06-03 13:21:08
【问题描述】:

即使文件传输过程中发生错误,大多数 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/秒)”一起出现的其他数字中分离出来吗?

【问题讨论】:

    标签: shell unix grep


    【解决方案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
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-11-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-02-06
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多