我有一个相对简单的脚本正在运行。脚本中没有任何内容发生变化,我正在使用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:readline': Invalid argument (Errno::EINVAL)
from c:/ruby/lib/ruby/1.8/net/ftp.rb:211:in
getline'
来自c:/ruby/lib/ruby/1.8/net/ftp.rb:221:in getmultiline'
from c:/ruby/lib/ruby/1.8/net/ftp.rb:235:in
getresp'
来自c:/ruby/lib/ruby/1.8/net/ftp.rb:251:in voidresp'
from c:/ruby/lib/ruby/1.8/net/ftp.rb:274:in
voidcmd'
来自c:/ruby/lib/ruby/1.8/monitor.rb:242:in synchronize'
from c:/ruby/lib/ruby/1.8/net/ftp.rb:290:in
sendport'
来自c:/ruby/lib/ruby/1.8/net/ftp.rb:298:makeport'
from c:/ruby/lib/ruby/1.8/net/ftp.rb:329:in
transfercmd'
来自c:/ruby/lib/ruby/1.8/net/ftp.rb:421:在retrlines'
from c:/ruby/lib/ruby/1.8/monitor.rb:242:in
synchronize'中
来自c:/ruby/lib/ruby/1.8/net/ftp.rb:419:在retrlines'
from c:/ruby/lib/ruby/1.8/net/ftp.rb:518:in
gettextfile'
欢迎提示。
答案 0 :(得分:0)
确保pathHere包含有效的路径名,而不是设置为nil
答案 1 :(得分:0)
想出来。我们有一些办公室网络的变化。我现在需要使用被动模式,可以使用此命令设置:ftp.passive=true