367 lines
8.3 KiB
Groff
367 lines
8.3 KiB
Groff
.\" %Id: fetch.1,v 1.24 1998/09/20 00:01:26 jkh Exp %
|
|
.\" jpman %Id: fetch.1,v 1.4 1997/08/15 06:31:28 horikawa Stab %
|
|
.Dd July 2, 1996
|
|
.Dt FETCH 1
|
|
.Os FreeBSD 2.2
|
|
.Sh 名称
|
|
.Nm fetch
|
|
.Nd URL(Uniform Resource Locator)形式でのファイルの取得
|
|
.Sh 書式
|
|
.Nm fetch
|
|
.Op Fl MPabmnpqr
|
|
.Op Fl S Ar size
|
|
.Op Fl o Ar file
|
|
.Ar URL
|
|
.Op Ar ...
|
|
.Nm fetch
|
|
.Op Fl MPRmnpqr
|
|
.Op Fl S Ar size
|
|
.Op Fl o Ar file
|
|
.Op Fl c Ar dir
|
|
.Fl f Ar file
|
|
.Fl h Ar host
|
|
.Sh 解説
|
|
.Nm fetch
|
|
は、
|
|
.Tn FTP
|
|
もしくは
|
|
.Tn HTTP
|
|
プロトコルを使ってネットワークの遠隔サイトから、ファイルの転送を
|
|
行います。コマンドの最初の書式の
|
|
.Ar URL
|
|
は、
|
|
.Li http://site.domain/path/to/the/file
|
|
もしくは、
|
|
.Li ftp://site.domain/path/to/the/file
|
|
の形式をしています。
|
|
複製もしくはリンクされる(以下の
|
|
.Fl l
|
|
フラグを参照)ローカルでのファイル名を指定するために、
|
|
.Em file:/path/to/the/file
|
|
という URL 形式が使えます。後述の URL 文法を参照してください。
|
|
.Pp
|
|
コマンドの 2 番目の形式は、
|
|
ファイル名と遠隔ホスト名を
|
|
.Fl h
|
|
と
|
|
.Fl f
|
|
フラグで指定して、
|
|
.Tn FTP
|
|
プロトコルを使ってファイルを取得するために使われます。
|
|
.Pp
|
|
以下のオプションが使用可能です。
|
|
.Bl -tag -width Fl
|
|
.It Fl a
|
|
ソフト上での失敗の場合に自動的に転送を再試行します。
|
|
.It Fl b
|
|
.Tn TCP
|
|
プロトコルを正しく実装していない
|
|
.Tn HTTP
|
|
サーバのバグ対応を行います。
|
|
.It Fl c Ar dir
|
|
遠隔ホストの
|
|
.Ar dir
|
|
ディレクトリのファイルを取得します。
|
|
.It Fl f Ar file
|
|
遠隔ホストの
|
|
.Ar file
|
|
という名前のファイルを取得します
|
|
.It Fl h Ar host
|
|
ホスト名が
|
|
.Ar host
|
|
にあるファイルを取得します。
|
|
.It Fl l
|
|
目標が
|
|
.Ar file:/
|
|
形式のURLだった場合、目標を複製しようとするのではなく、
|
|
リンクを作成します。
|
|
.It Fl M
|
|
.It Fl m
|
|
ミラーモード: ファイルの変更時間を遠隔ホストの変更時間と同じに
|
|
設定します。ローカルホストにファイルが既に存在しサイズと
|
|
変更時間が同じである場合、転送は行われません。
|
|
.It Fl n
|
|
転送されるファイルの変更時間を保存せず、現在の時間を使います。
|
|
.It Fl o Ar file
|
|
出力ファイル名を
|
|
.Ar file
|
|
にします。
|
|
デフォルトでは、``パス名''が指定された URI から取り出され、その
|
|
ベースネームが出力ファイルの名前として使われます。
|
|
.Ar file
|
|
引数として
|
|
.Sq Li \&-
|
|
を与えると、結果は標準出力に出力されます。
|
|
.It Fl P
|
|
.It Fl p
|
|
.Tn FTP
|
|
プロトコルをパッシブモードで使います。これは、防火壁 (firewall)
|
|
を跨いだ場合に有効です。
|
|
.It Fl q
|
|
沈黙モード。端末に転送の進行状態を報告しません。
|
|
.It Fl R
|
|
転送が失敗もしくは不完全であった時でさえ、与えられたファイル名は
|
|
``大事にされ''、どんな状況下でもファイル名は消去されません.
|
|
.It Fl r
|
|
以前に中断された転送を再開します。
|
|
.It Fl S Ar bytes
|
|
.Tn FTP
|
|
もしくは
|
|
.Tn HTTP
|
|
のサーバに対してファイルサイズを報告するよう要求し、
|
|
本オプションにより指定される値と比較します。
|
|
合致しない場合、メッセージが表示され、ファイルは取得されません。
|
|
サーバがファイルサイズの報告をサポートしない場合、
|
|
本オプションは無視され、ともかくファイルは取得されます。
|
|
前もってファイルサイズが分かる場合、
|
|
不完全なファイルもしくは誤ったバージョンのファイルを
|
|
.Nm
|
|
がダウンロードするのを防ぐために有用です。
|
|
.It Fl t
|
|
別のバグがある
|
|
.Tn TCP
|
|
実装に対する対処を行います。
|
|
.It Fl T Ar second
|
|
タイムアウト時間を
|
|
.Ar second
|
|
秒に設定します。
|
|
ftp での転送に対しては
|
|
.Ev FTP_TIMEOUT
|
|
環境変数が、 http での転送に関しては
|
|
.Ev HTTP_TIMEOUT
|
|
環境変数が,設定されていた場合は、それを上書きします。
|
|
.It Fl v
|
|
冗長性を増加させます。
|
|
複数の
|
|
.Fl v
|
|
を指定することで、より情報が得られるようになります。
|
|
.El
|
|
.Pp
|
|
多くのオプションは、環境によってのみ制御されます
|
|
(これはバグです)。
|
|
.Sh URL 文法
|
|
.Nm
|
|
は、RFC1738 に記述されている
|
|
.Tn http
|
|
および
|
|
.Tn ftp
|
|
の URL を受け付けます。
|
|
.Tn ftp
|
|
の URL ではユーザ名とパスワードを指定可能であり、
|
|
.Li ftp://user:password@host/
|
|
という文法で指定します。
|
|
パスがユーザのホームディレクトリの相対指定ではなく、絶対指定の場合には、
|
|
パスを %2F で開始する必要があり、
|
|
.Li ftp://root:mypass@localhost/%2Fetc/passwd
|
|
のように指定します。
|
|
.Sh プロキシサーバ
|
|
防火壁の中の多くのサイトは、信用できるプロトコルで防火壁を通して
|
|
通信を行なうためにアプリケーションゲートウェイ( ``プロキシサーバ'' )
|
|
を利用します。
|
|
.Nm
|
|
プログラムは、プロキシサーバを使った
|
|
.Tn FTP
|
|
と
|
|
.Tn HTTP
|
|
プロトコルの両方を利用可能です。
|
|
.Tn FTP
|
|
プロキシサーバは
|
|
.Tn FTP
|
|
の要求だけを取り次ぎ、
|
|
.Tn HTTP
|
|
プロキシサーバは
|
|
.Tn FTP
|
|
と
|
|
.Tn HTTP
|
|
の両方の要求を取り次ぎます。
|
|
プロキシサーバは、環境変数
|
|
.Dq Va PROTO Ns Ev _PROXY
|
|
を定義することで設定されます。
|
|
ここで、
|
|
.Va PROTO
|
|
はプロトコルの名前で、英大文字で記述します。
|
|
環境変数の値には、ホスト名と必要ならばコロン (:) に続けてポート番号を
|
|
指定します。
|
|
.Pp
|
|
.Tn FTP
|
|
プロキシクライアントは、
|
|
.Do Va remoteuser Ns Li \&@ Ns Va remotehost
|
|
.Op Li \^@ Ns Va port
|
|
.Dc
|
|
という形式の ホスト名とポート番号を遠隔地のユーザ名として送ります。
|
|
.Tn HTTP
|
|
プロキシクライアントは、
|
|
.Tn HTTP
|
|
.Dq Li GET
|
|
要求を出した時に、単純に要求を出した元の URI を遠隔サーバに送ります。
|
|
HTTP プロキシによる認証は、いまはまだ実装されていません。
|
|
.Sh HTTP による認証
|
|
.Tn HTTP
|
|
プロトコルは、さまざまな種類の認証方法の提供を含んでいます。
|
|
現在、
|
|
.Nm fetch
|
|
がサポートしている方式は
|
|
.Dq basic
|
|
方式だけです。
|
|
この方法は、パケットの盗み見や人間が間に介在した攻撃にはセキュリティを
|
|
提供しません。
|
|
認証は、
|
|
.Ev HTTP_AUTH
|
|
と
|
|
.Ev HTTP_PROXY_AUTH
|
|
環境変数を設定することで可能となります。
|
|
両環境変数は、次のような同じ形式をしています。
|
|
空白で区切られたパラメータの設定リストからなり、個々の設定はコロンで
|
|
分けられたパラメータのリストからなります。最初の二つのパラメータはいつも
|
|
( 大文字でも小文字でも構わない ) 認証方法名と認証が行われる範囲です。
|
|
認証範囲が
|
|
.Sq Li \&*
|
|
の形式で指定されている時、他に指定されていない全ての範囲とみなされます。
|
|
.Pp
|
|
.Li basic
|
|
認証方式は、二つのオプションのパラメータを利用します。
|
|
一つ目はユーザ名で、 2 番目はそれに付けられたパスワードです。
|
|
環境でパスワードもしくは両方のパラメータが指定されていなく、
|
|
.Nm
|
|
の標準入力が端末である時には、
|
|
.Nm
|
|
は欠けているパラメータの入力をユーザにうながします。
|
|
したがって、ユーザが
|
|
.Dq Li jane
|
|
で
|
|
.Dq Li WallyWorld
|
|
範囲の認証で、パスワードが
|
|
.Dq Li QghiLx79
|
|
であるなら、彼女は
|
|
.Ev HTTP_AUTH
|
|
環境変数を以下のように設定します。
|
|
.Bl -enum -offset indent
|
|
.It
|
|
.Dq Li basic:WallyWorld:jane:QghiLx79
|
|
.It
|
|
.Dq Li basic:WallyWorld:jane
|
|
.It
|
|
.Dq Li basic:WallyWorld
|
|
.El
|
|
.Pp
|
|
.Nm
|
|
は欠けている情報が必要な場合は、尋ねてきます。
|
|
彼女は、認証範囲を
|
|
.Dq Li WallyWorld
|
|
と指定する代わりに、
|
|
.Dq Li \&*
|
|
と指定することで、どんな範囲でも認証を行うことを示せます。
|
|
これは、
|
|
.Dq Li basic:*
|
|
の様なもっとも一般的に使われる設定です。
|
|
この設定は、
|
|
.Nm
|
|
にどんな認証範囲であっても
|
|
.Li basic
|
|
認証を行わせることを指示します。
|
|
.Sh エラー
|
|
.Nm
|
|
は成功した時は 0 を返します。
|
|
また、失敗した場合には、
|
|
.Aq Pa sysexits.h
|
|
で定義される 0 でない値が返されます。
|
|
複数の URI が再試行のために与えられた時、
|
|
.Nm
|
|
は全てを試して、全て成功した場合だけ 0 を返します
|
|
(それ以外の場合は、最後の失敗のエラーを返します)。
|
|
.Sh 環境変数
|
|
.Bl -tag -width FTP_PASSIVE_MODE -offset indent
|
|
.It Ev FTP_TIMEOUT
|
|
.Tn FTP
|
|
接続を中断するまでの最大時間を秒で指定します。
|
|
.It Ev FTP_LOGIN
|
|
.Tn FTP
|
|
転送で使われるログイン名です。
|
|
デフォルトは ``anonymous'' が使われます。
|
|
.It Ev FTP_PASSIVE_MODE
|
|
パッシブモードで FTP を行います。
|
|
.It Ev FTP_PASSWORD
|
|
.Tn FTP
|
|
転送で使われるパスワードです。
|
|
デフォルトは
|
|
.Dq Va yourname Ns Li \&@ Ns Va yourhost
|
|
です。
|
|
.It Ev FTP_PROXY
|
|
.Tn FTP
|
|
を理解するプロキシサーバのアドレスを
|
|
.Do Va hostname Ns
|
|
.Op Li : Ns Va port
|
|
.Dc
|
|
の形式で与えます。
|
|
.It Ev HTTP_AUTH
|
|
.Tn HTTP
|
|
認証パラメータを定義します。
|
|
.It Ev HTTP_PROXY
|
|
.Tn HTTP
|
|
を理解するプロキシサーバのアドレスを
|
|
.Do Va hostname Ns
|
|
.Op Li : Ns Va port
|
|
.Dc
|
|
の形式で与えます。
|
|
.It Ev HTTP_PROXY_AUTH
|
|
.Tn HTTP
|
|
プロキシサーバのための認証パラメータを定義します。
|
|
.It Ev HTTP_TIMEOUT
|
|
.Tn HTTP
|
|
接続を中断するまでの最大時間を秒で指定します。
|
|
.Sh 関連項目
|
|
.Xr ftp 1 ,
|
|
.Xr tftp 1
|
|
.Sh 歴史
|
|
.Nm fetch
|
|
コマンドは
|
|
.Fx 2.1.5
|
|
から導入されました。
|
|
.Sh 作者
|
|
.Nm
|
|
のオリジナル実装は
|
|
.An Jean-Marc Zucconi
|
|
が行いました。
|
|
.Fx 2.2
|
|
のために、拡張を行ったのは
|
|
.An Garrett Wollman
|
|
です。
|
|
.Sh バグ
|
|
たくさんの環境変数とコマンドラインオプションがあります。
|
|
.Pp
|
|
.Fl a
|
|
オプションは、ある種類の
|
|
.Tn HTTP
|
|
の接続失敗のために実装されており、
|
|
.Tn FTP
|
|
の接続失敗のためではありません。
|
|
.Pp
|
|
.Tn HTTP
|
|
のために、
|
|
.Dq basic
|
|
認証モードだけが実装されています。
|
|
これは、ダイジェスト認証に置き換えられるべきものです。
|
|
.Pp
|
|
(
|
|
.Tn FreeBSD
|
|
以外の) 実装には、データが含まれるパケットに
|
|
.Dv SYN
|
|
や
|
|
.Dv FIN
|
|
の制御フラグが含まれている状況を正しく実装していないものがあります。
|
|
.Sq Fl t
|
|
フラグは後者に対する対処を行い、
|
|
.Sq Fl b
|
|
フラグは前者に対する対処を行います。
|
|
これらはサーバの
|
|
.Tn TCP
|
|
スタックのエラーですから、我々ができる最良の解はこれらの対処です。
|
|
正しいサーバとの通信の場合には、
|
|
.Fl t
|
|
および
|
|
.Fl b
|
|
を含まない最良の
|
|
.Tn HTTP
|
|
転送が実現されます。
|
|
(少ない返答の場合) ラウンドトリップ回数は最小の 2 回となり、
|
|
他の実装よりも 1 回少なくなります。
|