【问题标题】:perl NET::FTP ls is giving argument too long errorperl NET::FTP ls 给出的参数太长错误
【发布时间】:2012-10-19 16:46:15
【问题描述】:

我是 Linux 和 perl 的新手。我们的一个 linux 机器上有一个 perl 脚本,它从另一台 linux 机器下载每日生成的日志文件。这个脚本在两个月前停止了,现在当我尝试再次运行它时,它给出了 "Net::FTP=GLOB(0x87423fc) 错误,我看了在源机器上查找文件,发现目前已经创建了大约 36000~ 个日志文件。

用于测试目的 1.)我使用 linux ftp 命令连接到源机器并使用 ls 列出文件,这是成功的。 2.)我也登录到源机器并运行 ls 命令进入日志文件目录,它成功列出了文件。

谁能告知为什么 perl 脚本会从服务器获取 550 错误代码以列出这些文件?

下面是我们用于下载文件的 perl 脚本的调试日志跟踪:-

Net::FTP>>> Net::FTP(2.77)
Net::FTP>>>   Exporter(5.58)
Net::FTP>>>   Net::Cmd(2.28)
Net::FTP>>>   IO::Socket::INET(1.31)
Net::FTP>>>     IO::Socket(1.30)
Net::FTP>>>       IO::Handle(1.27)
    Net::FTP=GLOB(0x87423fc)<<< 220 hostname.server FTP server (Version wu-2.6.2-5-ncx-1 Wed Jun 29 14:53:11 CEST 2005) ready.
    Net::FTP=GLOB(0x87423fc)>>> USER USR
    Net::FTP=GLOB(0x87423fc)<<< 331 Password required for USR.
    Net::FTP=GLOB(0x87423fc)>>> PASS ....
    Net::FTP=GLOB(0x87423fc)<<< 230 User USR logged in.  Access restrictions apply.
    Net::FTP=GLOB(0x87423fc)>>> CWD /backup
    Net::FTP=GLOB(0x87423fc)<<< 250 CWD command successful.
    Net::FTP=GLOB(0x87423fc)>>> PORT 192,168,1,154,217,0
    Net::FTP=GLOB(0x87423fc)<<< 200 PORT command successful.
    Net::FTP=GLOB(0x87423fc)>>> NLST
    Net::FTP=GLOB(0x87423fc)<<< 550 Arguments too long
    Net::FTP=GLOB(0x87423fc)>>> QUIT
    Net::FTP=GLOB(0x87423fc)<<< 221-You have transferred 0 bytes in 0 files.
    Net::FTP=GLOB(0x87423fc)<<< 221-Total traffic for this session was 393 bytes in 0 transfers.
    Net::FTP=GLOB(0x87423fc)<<< 221-Thank you for using the FTP service on hostname.server
    Net::FTP=GLOB(0x87423fc)<<< 221 Goodbye.

提前致谢

【问题讨论】:

  • 请向我们展示 perl 脚本向 ftp 服务器发出的命令列表。

标签: linux perl ftp


【解决方案1】:

这通常意味着 NLST 命令(即 ls )的结果大于为您的库预先配置的某个阈值。

【讨论】:

  • 您能否提供任何提示或文档链接,告诉我如何手动配置此阈值!
  • 不幸的是,由于您似乎可以与其他客户一起执行此操作,因此我可以想到两件事来尝试。 1) 使用嗅探器查看双方到底发送了什么,并比较一对客户端是否与失败的 Perl 客户端。 2) 使用调试器运行 perl 和 step, step, step...
  • 您可以在创建 Net::FTP 对象时尝试将默认的 10240 字节块大小 BlockSize 选项更改为更大的值。
  • @LenJaffe & Ouki,非常感谢您的及时回复!虽然我使用 linux ftp 客户端解决了这个问题并编写了一个执行与 perl 脚本相同的过程的 bash 脚本。我没有多少时间来产生结果,而且是一个完全新手,运行这些测试对我来说并不容易,也许我会在 perl 足够好的时候尝试它:)
  • 我赞扬你的实用主义。
猜你喜欢
  • 1970-01-01
  • 2020-05-26
  • 2019-03-25
  • 2011-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
相关资源
最近更新 更多