人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

wgetで質問です.
$ wget URL -O file
として,URLにあるファイルのリストをfileに書き出したいのですが,同じマシン上の別ユーザーで実行した場合で書き出す形式が異なります.
これはどこの環境設定に依存するのでしょうか?
ユーザーA
-----------------------------------
<HTML>
<HEAD>
<TITLE>Directory listing for ***</TITLE>
</HEAD>
<BODY>
<h2>Current directory is ***</h2>
<BR>
<HR>
<PRE>
<IMG SRC="http://**.gif"> <a href="ftp://***">..</a>
<IMG SRC="http://**.gif"> -rw-rw-r-- 1 1000 1000 67982 Apr 2 2007 <a href="ftp://***/file1">file1</a>
<IMG SRC="http://**.gif"> -rw-rw-r-- 1 1000 1000 67982 Apr 2 2007 <a href="ftp://***/file2">file2</a>
.....
-----------------------------------


ユーザーB
-----------------------------------
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
<title>Index of *** on ***</title>
</head>
<body>
<h1>Index of *** on ***</h1>
<hr>
<pre>
2007 Apr 02 File <a href="ftp://**/file1">file1</a> (*** bytes)
2007 Apr 02 File <a href="ftp://**/file2">file2</a> (*** bytes)
....
-----------------------------------
よろしくお願いします.


●質問者: taki
●カテゴリ:コンピュータ インターネット
✍キーワード:INDEX ON URL wget ファイル
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● cicupo
●10ポイント

あまり自信がないですが、相手方がリングサーバという可能性はありませんでしょうか?

以下のオプションでより詳しい情報が得られるのではないかと思います。

 -S
 --server-response
 Print the headers sent by HTTP servers and responses sent by FTP
 servers.

もしくは

 --save-headers
 Save the headers sent by the HTTP server to the file, preceding the
 actual contents, with an empty line as the separator.

当方は GNU Wget 1.10.2 です。

◎質問者からの返答

ありがとうございます.

今回の場合,同じサーバでの現象なので,こちらの設定が問題なのだと思います.

ユーザーAの場合に,ファイルのリストの前に".."があったり,画像ファイルが挿入されるのはどこの設定かを知りたいのです.

こちらのバージョンも同じです.

そちらでは,どんな形式で出力されますか?

よろしくお願いします.


2 ● yoshifumi1975
●2ポイント

ユーザ毎で動作が異なるということは、$HOME/.wgetrc では無いでしょうか。

つまり、/home/ユーザA/.wgetrc や、/home/ユーザB/.wgetrc が無いか見てみてください。

◎質問者からの返答

ありがとうございます.

すでに,~/.wgetrc はチェックしてます.


3 ● bayan
●20ポイント

URLがまったく同じなのに、吐き出した結果が違うということでしょうか?


(多分)上の階層に移動する .. とか、アイコンの画像とかは、

相手方のサーバーが用意しているもので、wget が出しているのではないと思います。


私も cicupo さんがおっしゃっているように相手方がリングサーバー等で、

異なるサーバーから受信している可能性を、まずは疑います。


同じサーバーというのはURLのホスト名の部分が同じということでしょうか?


同じサーバー名であっても複数のIPアドレスが割り当てられていて、その都度

違うサーバーに行っていることがあります。


またIPアドレスがひとつであっても、ロードバランサーやリバースプロキシが

代表窓口をやっていて、後背に複数のWebサーバーが隠れているという場合も

あると思います。


-S オプションで相手側の応答ヘッダや、ホスト名の解決(Resolving) の様子を

確認してみましたか?



差し支えなければURLを教えてもらえますでしょうか?

当方もGNU Wget 1.10.2 (Red Hat modified) が入っているので、

出力形式を確認するができると思います。

とここまで書いたのですが、ユーザーごとに環境が違うとすると、< br>

.wgetrc に何か書いてあるかもしれませんね。

ユーザーのホームディレクトリに .wgetrc はありますか?


例えば、user_agent が設定してあって、相手のサーバーが

ユーザーエージェントを見て出力を変えるということはあるかもしれません。


あとは http_proxy が設定してあって、プロキシが途中で改変しているとか。

◎質問者からの返答

ありがとうございます.

$ wget -d ftp://ftp.riken.go.jp -O /tmp/outfile

で,ユーザー毎に結果が違います.

ちなみに,どのユーザーも~/.wgetrc は使用していません.

他の,~/.*rc の設定の違いかと思っているのですが・・・


4 ● cicupo
●120ポイント ベストアンサー

# お返事が遅くなりすみません。

# 相変わらず以下の回答は自信はないのでポイントは結構です。

まず訂正なのですが、--save-headers は FTP だと何もヘッダが出力されないようです。てっきり HTTP の話だと思い込んでいましたもので、すみません。FTP の場合のヘッダも何かすれば保存できるのかもしれませんが。。

さて、意図しない設定に関しては、ともかくも

・オプション等何も付けずに実行している

・設定ファイル /etc/wgetrc や $HOME/.wgetrc の記述に問題ないか

というのを確認していただいて。。

質問者さんの例を見ると、Index の記述が全く異なる(一方は "Directory listing for"、もう一方は "Index of ...")ので、最終的に接続しているサーバが違うのかなぁと思いリングサーバということをご確認したのですが、良く考えると、同じマシンから同じリングサーバに接続しても同じサーバに接続するような気もしますね。。

他に考えられる点として、例えば proxy の設定ですが、wget の設定でプロキシが意図せず有効になってしまっているとして、その場合は --no-proxy などのオプションを付けてみるなどの対策が考えられます。

また、LANG が異なれば、"Index of ..." などの表記も異なる場合があるようです(ただし日本語か英語かというような違いなので質問者さんのケースとは別の話だと思います)。

リンクの形式については man wget をさらによく読むと、以下の記述を見つけました(長いので一部省略してます)。

 -k
 --convert-links
..省略..
 * The links to files that have been downloaded by Wget will be
 changed to refer to the file they point to as a relative link.
..省略..
 * The links to files that have not been downloaded by Wget will
 be changed to include host name and absolute path of the loca-
 tion they point to.
..省略..
 Because of this, local browsing works reliably: if a linked file
 was downloaded, the link will refer to its local name; if it was
 not downloaded, the link will refer to its full Internet address
 rather than presenting a broken link. The fact that the former
 links are converted to relative links ensures that you can move the
 downloaded hierarchy to another directory.
..省略..

また、画像などを含めてすべてダウンロードするためのオプションとして --page-requisites があります。

長くなりましたが、参考までにこちらで --save-headers した時の出力は以下のようになります(ただし、FTPの場合は先頭に空白行が入るだけでした)。

Date: Thu, 15 Nov 2007 00:12:34 GMT
Server: Apache
Set-Cookie: Apache=********; path=/
Connection: close
Content-Type: text/html
Content-Language: ja

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:spry="http://ns.adobe.com/spry">
..省略..
◎質問者からの返答

ありがとうございます.

まさに

> 他に考えられる点として、例えば proxy の設定ですが、wget の設定でプロキシが意図せず有効になってしまって

> いるとして、その場合は --no-proxy などのオプションを付けてみるなどの対策が考えられます。

でした.

.wgetrc でproxyの設定をしていなかったので,これは違うと思ってたのですが,--no-proxy であっさり解決しました.

本当にありがとうございます.

ソースまで見てくださったみたいで,本当にありがとうございます.

勉強になりました!


5 ● hamster078
●2ポイント

~/.wgetrcをコピーすれば同じになりますよ。

◎質問者からの返答

ありがとうございます.

すでに,~/.wgetrc はチェックしてます.

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ