【问题标题】:net/ftp invalid argument errornet/ftp 无效参数错误
【发布时间】:2012-03-19 20:34:53
【问题描述】:

我有一个相对简单的脚本正在运行。脚本中没有任何变化,我使用的是 ruby​​ 1.8.6。

require 'net/ftp'
ftp = Net:: FTP.new(ip)
ftp.login(user=name,passwd=pass)
ftp.chdir(pathHere)
ftp.gettextfile('onhandapt.txt', File.basename('onhandapt.txt'))
ftp.close

通过运行 irb 中的步骤,我知道我可以成功登录,甚至发出 ftp.list 命令来获取当前目录,但 ftp.chdir 是脚本失败的地方。在 irb 中,ftp.chdir 命令产生“nil”。仔细检查服务器上的路径。

脚本产生这个错误: c:/ruby/lib/ruby/1.8/net/ftp.rb:211:in readline': Invalid argument (Errno::EINVAL) from c:/ruby/lib/ruby/1.8/net/ftp.rb:211:ingetline' 来自 c:/ruby/lib/ruby/1.8/net/ftp.rb:221:in getmultiline' from c:/ruby/lib/ruby/1.8/net/ftp.rb:235:ingetresp' 来自 c:/ruby/lib/ruby/1.8/net/ftp.rb:251:in voidresp' from c:/ruby/lib/ruby/1.8/net/ftp.rb:274:invoidcmd' 来自 c:/ruby/lib/ruby/1.8/monitor.rb:242:in synchronize' from c:/ruby/lib/ruby/1.8/net/ftp.rb:290:insendport' 来自 c:/ruby/lib/ruby/1.8/net/ftp.rb:298:in makeport' from c:/ruby/lib/ruby/1.8/net/ftp.rb:329:intransfercmd' 来自 c:/ruby/lib/ruby/1.8/net/ftp.rb:421:in retrlines' from c:/ruby/lib/ruby/1.8/monitor.rb:242:insynchronize' 来自 c:/ruby/lib/ruby/1.8/net/ftp.rb:419:in retrlines' from c:/ruby/lib/ruby/1.8/net/ftp.rb:518:ingettextfile'

欢迎提出想法。

【问题讨论】:

  • 您是否尝试过手动 ftp-client 来检查您是否真的可以进入目标目录? IE。您没有处理某种权限问题或类似问题。

标签: ruby


【解决方案1】:

确保 pathHere 包含有效的路径名且未设置为 nil

【讨论】:

  • 路径正确。在我的脚本中,我实际上发出了 ftp.chdir('live/www')。在 irb 中,当我发出 ftp.chdir('live') 时,我可以跨步,它报告 nil。
【解决方案2】:

想通了。我们进行了一些办公网络更改。我现在需要使用被动模式,可以用这个命令设置:ftp.passive=true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 2016-01-05
    • 2020-10-16
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多