From: Takeshi UME Imai Date: 1999-07-02T01:01:29+09:00 Subject: [ruby-list:15185] Q. about ftplib 今井@羽村です。 ftplibの使い方について質問させてください。 ISPのあるdirectory(自身のhome directory以下にある)にあるファイルをごぞっ とftpでとってこようと以下のようなスクリプトを書きました。 ------------------------------------------------------------------------- #!/usr/local/bin/ruby require 'ftplib' ftp = FTP.new(my_isp_hostname, my_account, my_passwd) ftp.chdir(my_directory) ftp.dir do |i| next if (i =~ /^total/) filename = i.split(/\s+/).pop print filename, "\n" ftp.getbinaryfile(filename, filename, 4096) do |data| print "." $>.flush end print "\n" end ftp.quit ftp.close ------------------------------------------------------------------------- ところがファイルを取得する時点でエラーになってしまいます。debug_modeを trueにして表示させたメッセージは以下です(IP Addressなど一部伏字とさせ ていただきました。 ------------------------------------------------------------------------- put: CWD my_directory get: 250 CWD command successful. put: TYPE A get: 200 Type set to A. put: PORT xxx,xxx,xxx,xxx,x,xxx get: 200 PORT command successful. put: LIST get: 150 ASCII data connection for /bin/ls (xxx.xxx.xxx.xxx,xxxx) (0 bytes). filename put: TYPE I get: 226 ASCII Transfer complete. put: PORT xxx,xxx,xxx,xxx,x,xxx get: 200 Type set to I. put: RETR filename get: 200 PORT command successful. /usr/local/lib/ruby/1.3/ftplib.rb:200:in `transfercmd': 200 PORT command successful. (FTPReplyError) from /usr/local/lib/ruby/1.3/ftplib.rb:248:in `retrbinary' from /usr/local/lib/ruby/1.3/ftplib.rb:247:in `mon_synchronize' from /usr/local/lib/ruby/1.3/ftplib.rb:247:in `retrbinary' from /usr/local/lib/ruby/1.3/ftplib.rb:332:in `getbinaryfile' from /home/takeshi/bin/myscript.rb:12 from /home/takeshi/bin/myscript.rb:8:in `call' from /usr/local/lib/ruby/1.3/ftplib.rb:276:in `retrlines' from /usr/local/lib/ruby/1.3/ftplib.rb:269:in `loop' from /usr/local/lib/ruby/1.3/ftplib.rb:269:in `retrlines' from /usr/local/lib/ruby/1.3/ftplib.rb:266:in `mon_synchronize' from /usr/local/lib/ruby/1.3/ftplib.rb:266:in `retrlines' from /usr/local/lib/ruby/1.3/ftplib.rb:412:in `list' from /home/takeshi/bin/myscript.rb:8 ------------------------------------------------------------------------- ちなみに同じような感じでputbinaryfileメソッドを利用したスクリプトはちゃ んとファイルをISP側に転送できています。 rubyのヴァージョンは1.3.4で、MkLinux上で実行しています。 どうすれば正しく動くようになるのでしょうか?