我正在尝试创建一个脚本,以使用Ruby从FTP服务器列出和下载数据.我是Ruby的新手,所以我查找了如何使用Net :: FTP的文档.我无法理解为什么这不起作用:
require 'net/ftp'
server = "ftp.server.com"
user = "myuser"
password = "mypassword"
Net::FTP.open(server, user, password) do |ftp|
files = ftp.chdir('mydirectory/')
files = ftp.list
puts "list out of directory:"
puts files
end
Run Code Online (Sandbox Code Playgroud)
这不起作用,返回此错误:
/home/adhown/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/ftp.rb:298:in `getresp': 425 >Failed to establish connection. (Net::FTPTempError)
from /home/adhown/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/ftp.rb:325:in `block in sendcmd'
from /home/adhown/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
from /home/adhown/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/ftp.rb:323:in `sendcmd'
from /home/adhown/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/ftp.rb:402:in `transfercmd'
from /home/adhown/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/ftp.rb:478:in `block (2 levels) in retrlines'
from /home/adhown/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/ftp.rb:178:in `with_binary'
from /home/adhown/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/ftp.rb:477:in `block in retrlines'
from /home/adhown/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
from /home/adhown/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/ftp.rb:476:in `retrlines'
from /home/adhown/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/ftp.rb:722:in `list'
from test_ftp.rb:10:in `block in '
from /home/adhown/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/ftp.rb:116:in `open'
from test_ftp.rb:8:in `'
任何人都可以解释我的脚本有什么问题吗?
sai*_*ala 39
你的代码对我来说很好.我怀疑问题可能是因为Net::FTP连接模式,默认情况下是活动的.尝试使用被动模式进行连接,代码示例如下 -
ftp = Net::FTP.new(server)
ftp.passive = true
ftp.login user, password
files = ftp.chdir('mydirectory/')
files = ftp.list
puts "list out of directory:"
puts files
ftp.close
Run Code Online (Sandbox Code Playgroud)
如果你很好奇,跟随是主动和被动模式之间的区别(来自维基百科).