FTP を実装したクラスです。
default_passive -> bool
[permalink][rdoc]FTPの接続のグローバルなデフォルトモードが passive mode である場合に true を返します。
default_passive=(on)
[permalink][rdoc]passive mode をFTPの接続のグローバルなデフォルトモードにするかどうかを設定します。
デフォルト値は true です。
new(host = nil, user = nil, passwd = nil, acct = nil) -> Net::FTP
[permalink][rdoc]新しい Net::FTP のインスタンスを生成します。
host が指定された場合、生成されたインスタンスに対して Net::FTP#connect を呼び出し、さらに user が指定された場合は Net::FTP#login を呼び出します。
[SEE_ALSO] Net::FTP.open
open(host, user = nil, passwd = nil, acct = nil) -> Net::FTP
[permalink][rdoc]open(host, user = nil, passwd = nil, acct = nil) {|ftp| ... } -> object
新しい Net::FTP インスタンスを生成します。
Net::FTP.new と異なり host を省略できません。
ブロックを与えた場合には、生成したインスタンスをブロックに渡して呼びだします。この場合、ブロック終了時に Net::FTP#close を呼びだし、ブロックの値を返します。
ブロックを与えなかった場合には生成したインスタンスを返します。
user が指定された場合は Net::FTP#login を呼び出します。
abort -> String
[permalink][rdoc]データの転送を中止します。
acct(account) -> nil
[permalink][rdoc]サーバーに ACCT コマンドでアカウント情報を送ります。
binary -> bool
[permalink][rdoc]Net::FTP#put, Net::FTP#get による転送をバイナリモード(IMAGE)で行うかどうかを返します。
デフォルトの値は true です。
偽の場合、テキストモード(ASCII)が仮定されます。
EBCDIC や LOCAL など他の表現タイプはサポートされていません。
[SEE_ALSO] Net::FTP#binary=
binary=(bool)
[permalink][rdoc]Net::FTP#put, Net::FTP#get による転送をバイナリモード(IMAGE)で転送するかどうかを指定します。
デフォルトの値は true です。
偽の場合、テキストモード(ASCII)が仮定されます。
EBCDIC や LOCAL など他の表現タイプはサポートされていません。
[SEE_ALSO] Net::FTP#binary
chdir(dirname) -> nil
[permalink][rdoc]リモートサーバでのカレントディレクトリを dirname に変更します。
close -> ()
[permalink][rdoc]サーバとの接続を切ります。
再び Net::FTP#connect で接続しない限り一切の操作が不可能になります。
closed? -> bool
[permalink][rdoc]接続が切れている時に真を返します。
connect(host, port = FTP_PORT) -> ()
[permalink][rdoc]host で指定されたホストに接続します。
環境変数 SOCKS_SERVER が指定されている場合、SOCKS プロクシを経由して接続します。
これを呼びだす前に通信をしようとすると、 Net::FTPConnectionError 例外が発生します。
debug_mode -> bool
[permalink][rdoc]デバッグモードであれば真を、そうでなければ偽を返します。
値が真であるとき、送受信の記録と ABOR, STAT の結果が $stdout に随時表示されます。
デフォルトは偽です。
[SEE_ALSO] Net::FTP#debug_mode=
debug_mode=(boolean)
[permalink][rdoc]デバッグモードの on/off を設定します。
[SEE_ALSO] Net::FTP#debug_mode
delete(filename) -> nil
[permalink][rdoc]ファイルを削除します。
リモートサーバ上の fromname という名前のファイルを削除します。
削除に失敗した場合には 例外が発生します。
list(*args) -> [String]
[permalink][rdoc]list(*args) {|line| ... } -> nil
ls(*args) -> [String]
ls(*args) {|line| ... } -> nil
dir(*args) -> [String]
dir(*args) {|line| ...} -> nil
LIST コマンドを送信し、結果を返します。
ブロックとともに呼び出された場合は各行に対してブロックを実行します。ブロックなしの場合には文字列の配列で結果を返します。
get(remotefile, localfile = File.basename(remotefile), blocksize = DEFAULT_BLOCKSIZE) -> nil
[permalink][rdoc]get(remotefile, localfile = File.basename(remotefile), blocksize = DEFAULT_BLOCKSIZE) { |data| .... } -> nil
サーバ上のファイルを取得します。
Net::FTP#binary の値に従って Net::FTP#getbinaryfile もしくは Net::FTP#gettextfile を呼びだします。
binary が偽のとき、つまりテキストモードのときには blocksize は無視されます。
getbinaryfile(remotefile, localfile = File.basename(remotefile), blocksize = DEFAULT_BLOCKSIZE) {|data| ...} -> nil
[permalink][rdoc]getbinaryfile(remotefile, localfile = File.basename(remotefile), blocksize = DEFAULT_BLOCKSIZE) -> nil
サーバ上のファイルをバイナリモードで取得します。
サーバー上にある remotefile という名前のファイルを取得し、ローカルの localfile という名前のファイルに保存します。
localfile が nil である場合には保存はしません。
データの転送は blocksize バイト毎に行なわれます。
ブロックが指定された場合はデータを blocksize バイト受信するごとに、そのデータをブロックに渡します。
pwd -> String
[permalink][rdoc]getdir -> String
カレントディレクトリを返します。
gettextfile(remotefile, localfile = File.basename(remotefile)) -> nil
[permalink][rdoc]gettextfile(remotefile, localfile = File.basename(remotefile)) {|line| ...} -> nil
サーバ上のファイルをテキストモードで取得します。
サーバー上にある remotefile という名前のファイルを取得し、ローカルの localfile という名前のファイルに保存します。
localfile が nil である場合には保存はしません。
ブロックが指定された場合はデータを1行受信するごとに、その行をブロックに渡します。
help(arg = nil) -> String
[permalink][rdoc]サーバからの help 情報を返します。
last_response -> String
[permalink][rdoc]サーバからの最後の応答を文字列で返します。
例えばログイン(Net::FTP#login)に成功した場合には "230 Login successful.\n" を返します。
[SEE_ALSO] Net::FTP#last_response_code
lastresp -> String
[permalink][rdoc]last_response_code -> String
サーバからの最後の応答のコードを文字列で返します。
例えばログイン(Net::FTP#login)に成功した場合には "230" を返します。
数字の意味は [RFC959] 参照してください。
[SEE_ALSO] Net::FTP#last_response
login(user = "anonymous", passwd = nil, acct = nil) -> ()
[permalink][rdoc]ホストへのログイン処理を行ないます。
このメソッドはホストへの接続後にしか使えません。
user, passwd が省略された場合、ユーザ名 "anonymous", パスワード user@host となります。
acct を省略しなかった場合には、 ACCT コマンドを acct で指定したパラメータで送ります。
mdtm(filename) -> String
[permalink][rdoc]MDTM コマンドを送信し、結果を返します。
mkdir(dirname) -> String
[permalink][rdoc]リモートサーバ上にディレクトリを作成します。
作成に失敗した場合には例外が発生します。
mlsd(pathname = nil) -> [Net::FTP::MLSxEntry]
[permalink][rdoc]mlsd(pathname = nil) {|entry| ... } -> ()
pathname で指定したディレクトリに含まれているファイルの詳細な情報を得ます。
ディレクトリの各ファイルの情報が Net::FTP::MLSxEntry のオブジェクトの配列として得られます。どのような情報を取り出せるかは Net::FTP::MLSxEntry を参照してください。 Net::FTP#list は結果が文字列で得られるため、それを適当に解釈する必要がありますが、このコマンドの結果は適切に解釈された結果を直接得ることができます。
pathname を省略した場合はカレントディレクトリを指定したことになります。
ブロックを渡した場合にはディレクトリの各ファイルごとにそのブロックを呼び出します。
FTP の MLST コマンド [RFC3659] を使います。FTPのLISTコマンドはその出力結果の標準化がなされていないため、標準的結果を得るコマンドとして MLST/MLSD が定義されました。
[SEE_ALSO] Net::FTP#mlst
require 'net/ftp' Net::FTP.open("ftp.example.org") do |ftp| ftp.login("anonymous", "foobar@example.com") p ftp.mlsd("/") # => # [#<Net::FTP::MLSxEntry:0x00558fbfa379c0 # @facts= # {"modify"=>2014-08-25 16:44:41 UTC, # "perm"=>"fle", # "type"=>"cdir", # "unique"=>"801U1FE8E6", # "unix.group"=>1042, # "unix.mode"=>493, # "unix.owner"=>106}, # @pathname => ".", # #<Net::FTP::MLSxEntry:0x00558fbfa33e10 # @facts= # {"modify"=>2004-12-22 08:56:36 UTC, # "perm"=>"adfr", # "size"=>1128, # "type"=>"file", # "unique"=>"801U1FEF97", # "unix.group"=>0, # "unix.mode"=>420, # "unix.owner"=>106}, # @pathname="README.txt">, # : # ] end
mlst(pathname = nil) -> Net::FTP::MLSxEntry
[permalink][rdoc]pathname で指定したファイル/ディレクトリの詳細な情報を得ます。
Net::FTP::MLSxEntry のインスタンスに得られた情報が保持されます。どのような情報を取り出せるかは Net::FTP::MLSxEntry を参照してください。 Net::FTP#list は結果が文字列で得られるため、それを適当に解釈する必要がありますが、このコマンドの結果は適切に解釈された結果を直接得ることができます。
pathname を省略した場合はカレントディレクトリを指定したことになります。
FTP の MLST コマンド [RFC3659] を使います。
[SEE_ALSO] Net::FTP#mlsd
mtime(filename, local = false) -> Time
[permalink][rdoc]filename の更新時刻を Time オブジェクトで返します。
local を真とすると、得られた更新時刻を地方時とみなします。偽の場合は更新時刻を協定世界時とみなします。
nlst(dir = nil) -> [String]
[permalink][rdoc]dir で指定したディレクトリのファイルの配列を返します。
dir を省略した場合カレントディレクトリが指定されます。
noop -> nil
[permalink][rdoc]NOOP コマンドを発行します。
サーバから応答が得られる他は何もしません。
open_timeout -> Numeric|nil
[permalink][rdoc]接続時のタイムアウトの秒数を返します。
制御用コネクションとデータ転送用コネクションの両方を開くときの共通のタイムアウト時間です。
この秒数たってもコネクションが開かなければ例外 Net::OpenTimeout を発生します。整数以外での浮動小数点数や分数を指定することができます。デフォルトは nil(タイムアウトしない)です。
[SEE_ALSO] Net::HTTP#read_timeout, Net::HTTP#open_timeout=
open_timeout=(seconds)
[permalink][rdoc]接続時のタイムアウトの秒数を設定します。
制御用コネクションとデータ転送用コネクションの両方を開くときの共通のタイムアウト時間です。
この秒数たってもコネクションが開かなければ例外 Net::OpenTimeout を発生します。整数以外での浮動小数点数や分数を指定することができます。デフォルトは nil(タイムアウトしない)です。
制御用コネクションを開く以下のメソッドで利用されます。
また、以下のデータ転送用コネクションを開くメソッドでも利用されます。
[SEE_ALSO] Net::HTTP#read_timeout, Net::HTTP#open_timeout
passive -> bool
[permalink][rdoc]passive モードであるならば真を、そうでなければ偽を返します。
デフォルトは偽です。
[SEE_ALSO] Net::FTP#passive=
passive=(bool)
[permalink][rdoc]passive モードを設定します。
[SEE_ALSO] Net::FTP#passive
put(localfile, remotefile = File.basename(localfile), blocksize = DEFAULT_BLOCKSIZE) -> nil
[permalink][rdoc]put(localfile, remotefile = File.basename(localfile), blocksize = DEFAULT_BLOCKSIZE) { |data| .... } -> nil
サーバへファイルを転送します。
Net::FTP#binary の値に従って Net::FTP#putbinaryfile もしくは Net::FTP#puttextfile を呼びだします。
binary が偽のとき、つまりテキストモードのときには blocksize は無視されます。
putbinaryfile(localfile, remotefile = File.basename(localfile), blocksize = DEFAULT_BLOCKSIZE) -> nil
[permalink][rdoc]putbinaryfile(localfile, remotefile = File.basename(localfile), blocksize = DEFAULT_BLOCKSIZE) {|data| ...} -> nil
サーバにファイルをバイナリモードで転送します。
ローカルの localfile という名前のファイルを読みだし、サーバー上の remotefile という名前のファイルに保存します。
データの転送は blocksize バイト毎に行なわれます。
ブロックが指定された場合はデータを blocksize バイト転送するごとに、そのデータをブロックに渡します。
puttextfile(localfile, remotefile = File.basename(localfile)) -> nil
[permalink][rdoc]puttextfile(localfile, remotefile = File.basename(localfile)) {|line| ... } -> nil
サーバにファイルをテキストモードで転送します。
ローカルの localfile という名前のファイルを読みだし、サーバー上の remotefile という名前のファイルに保存します。
ブロックが指定された場合はデータを1行転送するごとに、その行をブロックに渡します。
quit -> nil
[permalink][rdoc]FTP のセッションからログアウトします。
read_timeout -> Numeric|nil
[permalink][rdoc]読み込み一回でブロックしてよい最大秒数を返します。
この秒数たっても読みこめなければ例外 Net::ReadTimeout を発生します。整数以外での浮動小数点数や分数を指定することができます。デフォルトは 60 (秒)です。
[SEE_ALSO] Net::HTTP#open_timeout, Net::HTTP#read_timeout=
read_timeout=(seconds)
[permalink][rdoc]読み込み一回でブロックしてよい最大秒数を設定します。
この秒数たっても読みこめなければ例外 Net::ReadTimeout を発生します。整数以外での浮動小数点数や分数を指定することができます。デフォルトは 60 (秒)です。
このタイムアウト秒数は、サーバとやりとりするほとんどの Net::FTP のメソッドで有効です。
[SEE_ALSO] Net::HTTP#open_timeout, Net::HTTP#read_timeout
rename(fromname, toname) -> nil
[permalink][rdoc]ファイルをリネームします。
リモートサーバ上の fromname という名前のファイルを toname という名前に変更します。
resume -> bool
[permalink][rdoc]現在のリジュームモードの状態を返します。
リジュームモードが有効であるならば、いくつかの転送メソッドにおいて転送が中断され不完全な転送しかできなかった場合に再開が可能になります。
デフォルトは false です。
転送の中断と再開が可能なのは以下のメソッドです。
転送が中断したかどうかは転送先に問題のファイルが存在するかどうかで判定され、そのファイルサイズで再開する位置を決めます。
[SEE_ALSO] Net::FTP#resume=
resume=(boolean)
[permalink][rdoc]現在のリジュームモードを設定します。
[SEE_ALSO] Net::FTP#resume
retrbinary(cmd, blocksize, rest_offset = nil) -> nil
[permalink][rdoc]retrbinary(cmd, blocksize, rest_offset = nil) {|data| ...} -> nil
サーバーに cmd で指定されたコマンドを送り、バイナリデータを取り寄せます。
blocksize で指定されたバイト単位でデータを読み込み、ブロックに渡します。
rest_offset が省略されなかった場合は、cmdを送る前に REST コマンドを送り、指定したバイト数の位置から転送を開始します。
[SEE_ALSO] Net::FTP#getbinaryfile
retrlines(cmd) {|line| ...} -> nil
[permalink][rdoc]サーバーに cmd で指定されたコマンドを送り、テキストデータを取り寄せます。
一行ずつテキストを読み込み、ブロックに渡します。
[SEE_ALSO] Net::FTP#gettextfile
return_code -> String
[permalink][rdoc]このメソッドは obsolete です。使わないでください。
"\n" を返します。
return_code=(string)
[permalink][rdoc]このメソッドは obsolete です。使わないでください。
rmdir(dirname) -> nil
[permalink][rdoc]リモートサーバ上のディレクトリを削除します。
sendcmd(cmd) -> String
[permalink][rdoc]cmd で指定されたコマンドをサーバーに送り、サーバーからの応答を返します。
set_socket(sock, get_greeting = true) -> nil
[permalink][rdoc]FTP のコントロール接続のソケットを TCPSocket オブジェクト sock に設定します。
get_greeting に偽が与えられると、 set_socket は通信先を設定するだけで sock に対する操作を何も行ないません。 get_greeting が真ならば、通信先を sock に設定したあと、通常FTPサーバが接続時に送ってくるメッセージを読み込みます。
通常このメソッドは使うべきではありません。このライブラリの実装を理解した上で必要な場合のみ利用してください。
site(arg) -> nil
[permalink][rdoc]SITE コマンドを発行します。
size(filename) -> Integer
[permalink][rdoc]リモートサーバ上のファイルのサイズを返します。
status -> String
[permalink][rdoc]現在の状態を返します。
storbinary(cmd, file, blocksize, rest_offset = nil) -> nil
[permalink][rdoc]storbinary(cmd, file, blocksize, rest_offset = nil) {|data| ...} -> nil
サーバーに cmd で指定されたコマンドを送り、バイナリデータを送ります。
送るデータは IO のインスタンスを file で指定します。 (実際には StringIO のような IO とメソッドレベルで互換するオブジェクトであればなんでもかまいません)。
blocksize で指定されたバイト単位で file からデータを読みこみ、サーバに送ります。
rest_offset が省略されなかった場合は、cmdを送る前に REST コマンドを送り、指定したバイト数の位置から転送を開始します。
ブロックが指定された場合には、転送するデータを blocksize ごとにブロックにも渡します。
[SEE_ALSO] Net::FTP#putbinaryfile
storlines(cmd, file) -> nil
[permalink][rdoc]storlines(cmd, file) {|line| ...} -> nil
サーバーに cmd で指定されたコマンドを送り、テキストデータを送ります。
一行ずつで file からテキストを読み込み、サーバーに送ります。
送るデータは IO のインスタンスを file で指定します。 (実際には StringIO のような IO とメソッドレベルで互換するオブジェクトであればなんでもかまいません)。
ブロックが与えられた場合には各行をそのブロックに渡します。
[SEE_ALSO] Net::FTP#puttextfile
system -> String
[permalink][rdoc]サーバーの OS のタイプを返します。
voidcmd(cmd) -> nil
[permalink][rdoc]cmd で指定されたコマンドをサーバーに送ります。
welcome -> String
[permalink][rdoc]サーバのウェルカムメッセージを返します。
このメッセージはログイン(Net::FTP#login)時にサーバから送られます。
DEFAULT_BLOCKSIZE -> Integer
[permalink][rdoc]get, put をするときのデフォルトのブロックサイズです。
FTP_PORT -> Integer
[permalink][rdoc]FTPのデフォルトのポート番号(21)です。