ラベル wget の投稿を表示しています。 すべての投稿を表示
ラベル wget の投稿を表示しています。 すべての投稿を表示

2014年1月25日土曜日

認証付きproxy経由でyumとwgetを行う方法

社内ネットワークからインターネットへ接続する場合、認証付proxyを経由しなければならないケースが
多々あります。ブラウザの場合はproxyサーバをインターネットオプションに設定し、ID/Passwordを
入力すれば問題ありませんが、yumやwgetを利用する場合は、デフォルトだと入力するタイミングが
ないためブロックされてしまいます。これを回避する方法をまとめます。

OS: CentOS 6.5 (64-bit)
ProxyServer Hostname: proxy.tanyao.com
ProxyServer Prot: 8080
認証付きproxyのID(仮): ty201401
認証付きproxyのPassword(仮): secret


■yumの認証付きproxy対応設定

/etc/yum.confの最下行に下記を追記。
[root@cent65 ~]# tail -2 /etc/yum.conf
# Add Proxy
proxy=http://ty201401:secret@proxy.tanyao.com:8080/
proxy=http://[ID]:[Password]@[ProxyServer Hostname]:[Port]/
これで通常通りyumコマンドの操作が可能です。


■wgetの認証付きproxy対応設定

/etc/wgetrcを編集する方法もありますが、ここでは環境変数に設定する方法を紹介します。
[root@cent65 ~]# export http_proxy="http://ty201401:secret@proxy.tanyao.com:8080"
export http_proxy="http://[ID]:[Password]@[ProxyServer Hostname]:[Port]"
これで通常通りwgetコマンドの操作が可能です。


こちらの情報が何かのお役に立てましたら幸いです。サイト継続ご協力のほどお願い致します。m(_ _)m

2013年12月14日土曜日

wgetでWebサイトのレスポンスを調査するシェルスクリプト

wgetを利用して複数Webサイトのレスポンスを調査するシェルスクリプトのサンプルです。
今回は試しにキャリア3社のWebサイトのレスポンスを調査してみました。

OS: CentOS 6.4(64-bit)
wget: GNU Wget 1.12 built on linux-gnu.


■シェルスクリプトサンプル
[root@centos64 ~]# cat response.sh
#!/bin/sh
# wgetを利用してWebサイトのレスポンスを調査する。

URL=url.list
LOG=response_`date +%Y%m%d-%H%M`.log
TODAY=`date +%Y-%m-%d`

# url.listの存在チェック
if [ ! -f ${URL} ]; then
    echo "${URL} no such file or directory"
    exit 1
fi

wget -t 2 -P response -o ${LOG} -i ${URL}
rm -rf response

#grep "[0-9]\]$" ${LOG}
#grep -B 3 "404 Not Found" ${LOG}
grep ${TODAY} ${LOG}

exit 0
[root@centos64 ~]#
リトライは2回くらいで十分かと。

■URLリスト
[root@centos64 ~]# cat url.list
https://www.nttdocomo.co.jp/
https://www.nttdocomo.co.jp/product/
https://www.nttdocomo.co.jp/service/
https://www.nttdocomo.co.jp/binary/pdf/corporate/technology/document/pdc/jidoushadenwa.pdf

http://www.kddi.com/
http://www.au.kddi.com/
http://www.kddi.com/corporate/ir/library/annual_report/pdf/kddi_ar2013_j.pdf

http://www.softbank.jp/
http://www.softbank.jp/corp/
http://cdn.softbank.jp/corp/set/data/csr/pdf/csr2013_01.pdf
[root@centos64 ~]#
サイズの大きいPDFファイルへのリンク等を適当に入れています。

■実行結果
[root@centos64 ~]# ./response.sh
--2013-12-14 16:43:37--  https://www.nttdocomo.co.jp/
2013-12-14 16:43:42 (2.11 MB/s) - `response/index.html' へ保存終了 [44553]
--2013-12-14 16:43:42--  https://www.nttdocomo.co.jp/product/
2013-12-14 16:43:42 (2.02 MB/s) - `response/index.html.1' へ保存終了 [76905]
--2013-12-14 16:43:42--  https://www.nttdocomo.co.jp/service/
2013-12-14 16:43:43 (1.03 MB/s) - `response/index.html.2' へ保存終了 [162300]
--2013-12-14 16:43:43--  https://www.nttdocomo.co.jp/binary/pdf/corporate/technology/document/pdc/jidoushadenwa.pdf
2013-12-14 16:43:43 (2.18 MB/s) - `response/jidoushadenwa.pdf' へ保存完了 [733433/733433]
--2013-12-14 16:43:43--  http://www.kddi.com/
2013-12-14 16:43:48 (1023 KB/s) - `response/index.html.3' へ保存終了 [13808]
--2013-12-14 16:43:48--  http://www.au.kddi.com/
2013-12-14 16:43:53 (2.05 MB/s) - `response/index.html.4' へ保存完了 [56991/56991]
--2013-12-14 16:43:53--  http://www.kddi.com/corporate/ir/library/annual_report/pdf/kddi_ar2013_j.pdf
2013-12-14 16:43:55 (4.69 MB/s) - `response/kddi_ar2013_j.pdf' へ保存完了 [8913281/8913281]
--2013-12-14 16:43:55--  http://www.softbank.jp/
2013-12-14 16:44:00 (377 KB/s) - `response/index.html.5' へ保存終了 [43626]
--2013-12-14 16:44:00--  http://www.softbank.jp/corp/
2013-12-14 16:44:00 (460 KB/s) - `response/index.html.6' へ保存完了 [35866/35866]
--2013-12-14 16:44:00--  http://cdn.softbank.jp/corp/set/data/csr/pdf/csr2013_01.pdf
2013-12-14 16:44:07 (2.64 MB/s) - `response/csr2013_01.pdf' へ保存完了 [3378593/3378593]
終了しました --2013-12-14 16:44:07--
[root@centos64 ~]#
※レスポンス結果はその時々で変化します。
※上記はその時の結果であり、何かを保証するものではありません。

この情報が何かのお役にたてれば幸いです。m(_ _)m

2013年10月19日土曜日

複数URLのリンク切れをチェックするシェルスクリプト


ドメインの異なる複数のWebサイトに対してリンク切れが発生していないか
URLのリストに従ってチェックするシェルスクリプトのサンプルです。
wgetの--spiderオプションを利用しています。

OS: CentOS 6.4(64-bit)
wget: GNU Wget 1.12 built on linux-gnu.


■シェルスクリプトサンプル
#!/bin/sh
#######################################################################
# << 機能概要 >>
# URLリストを読み込んでリンク切れチェックするスクリプト
#
# << 変更履歴 >>
# Version  変更日       変更者        変更内容
# --------+------------+-----------+----------------------------------
#     1.0  2013/10/12   tanyao      New
#######################################################################

URL_LIST=url_list.txt
OUTPUT=url_result.txt

# URLリスト存在チェック
if [ ! -e $URL_LIST ]; then
    echo "`date \"+%Y%m%d %H:%M:%S\"` ERROR: $URL_LIST is not exist."
    exit 1
fi

# 出力結果クリア
:> $OUTPUT

# URLリスト読み込み
i=0
while read line
do
    url[$i]="$line"

    # リンク切れチェック結果出力
    wget -nv --spider --timeout 15 -t 1 ${url[$i]} -a $OUTPUT

    i=`expr $i + 1`
done < $URL_LIST

exit 0
url_check.sh というファイル名で保存し、パーミッションを755に変更。

■URLリストファイル準備
[root@centos64 url_check]# head url_list.txt
http://kakaku.com/item/J0000011385/
http://kakaku.com/item/J0000009488/
http://kakaku.com/item/K0000588606/
http://kakaku.com/item/K0000590023/
http://kakaku.com/item/K0000999999/
http://static.panoramio.com/photos/large/94004107.jpg
http://static.panoramio.com/photos/large/94007107.jpg
http://static.panoramio.com/photos/large/9d004108.jpg
http://www.atmarkit.co.jp/ait/articles/1302/05/news222.html
http://topics.jp.msn.com/world/topics.aspx?topicid=1985
url_check.sh と同階層にurl_list.txtを配置する。

■スクリプト実行
url_result.txtが出力される。
[root@centos64 url_check]# ./url_check.sh
[root@centos64 url_check]# head url_result.txt
2013-10-07 00:39:20 URL: http://kakaku.com/item/J0000011385/ 200 OK
2013-10-07 00:39:21 URL: http://kakaku.com/item/J0000009488/ 200 OK
2013-10-07 00:39:21 URL: http://kakaku.com/item/K0000588606/ 200 OK
2013-10-07 00:39:21 URL: http://kakaku.com/item/K0000590023/ 200 OK
http://kakaku.com/item/K0000999999/:
リモートファイルが存在していません -- リンクが壊れています!!!
2013-10-07 00:39:22 URL: http://static.panoramio.com/photos/large/94004107.jpg 200 OK
2013-10-07 00:39:22 URL: http://static.panoramio.com/photos/large/94007107.jpg 200 OK
http://static.panoramio.com/photos/large/9d004108.jpg:
リモートファイルが存在していません -- リンクが壊れています!!!
wgetのバージョンによっては、ステータスコードが200の場合、何も出力されない場合があります。

リンクチェック対象が多いとそれなりに時間がかかります。この情報がお役にたてれば幸いです。

2012年9月6日木曜日

CentOS 6.3 wgetでローカルにサイトをコピー

他のサイトを参ローカル環境にコピーするにはwgetという便利なコマンドがあります。
オプションなしで実行するとレイアウト崩れや画像抜けが発生するので適当なオプション
およびその役割をピックアップしてみます。

■構成情報
・OS:      CentOS6.3(64bit)
・wget:    1.12(OSバンドル)


■頭脳指数サイトをのトップページをwget
[root@cent63 ~]# wget -x -p -nH -k -P /var/www/html/wget -a wget.log http://tanyao.dynalias.net
[root@cent63 ~]#
2~3秒もかからないくらいで完了します。

■オプション概要
-x,  --force-directories       ⇒ディレクトリを強制的に作る
-p,  --page-requisites          ⇒HTML を表示するのに必要な全ての画像等も取得する
-nH, --no-host-directories     ⇒ホスト名のディレクトリを作らない
-k,  --convert-links              ⇒HTML や CSS 中のリンクをローカルを指すように変更する
-P,  --directory-prefix=PREFIX  ⇒ファイルを PREFIX/ 以下に保存する
-a,  --append-output=FILE      ⇒メッセージを FILE に追記する

■取得内容確認
[root@cent63 ~]# ll /var/www/html/wget/
合計 32
-rw-r--r-- 1 root root  214  1月  8 02:17 2003 index.css
-rw-r--r-- 1 root root  234  1月  6 22:19 2013 index.html
drwxr-xr-x 2 root root 4096  1月  6 22:19 2013 index_img
-rw-r--r-- 1 root root 5356  1月  6 22:19 2013 index_link.cgi
-rw-r--r-- 1 root root 1476  3月 23 18:13 2008 link_pass.js
-rw-r--r-- 1 root root 6230  1月  6 22:19 2013 zunou.html
[root@cent63 ~]# du -sh /var/www/html/wget/
96K     /var/www/html/wget/
[root@cent63 ~]# find /var/www/html/wget/ | wc -l
22
[root@cent63 ~]#
ブラウザでアクセスすると同一ページが表示されました。
http://192.168.xxx.146/wget/




以下、wgetのオプション説明
◆スタートアップ
  -V,  --version           バージョン情報を表示して終了する
  -h,  --help              このヘルプを表示する
  -b,  --background        スタート後にバックグラウンドに移行する
  -e,  --execute=COMMAND   `.wgetrc'形式のコマンドを実行する

◆ログと入力ファイル
  -o,  --output-file=FILE    ログを FILE に出力する
  -a,  --append-output=FILE  メッセージを FILE に追記する
  -d,  --debug               デバッグ情報を表示する
  -q,  --quiet               何も出力しない
  -v,  --verbose             冗長な出力をする (デフォルト)
  -nv, --no-verbose          冗長ではなくする
  -i,  --input-file=FILE     FILE の中に指定された URL をダウンロードする
  -F,  --force-html          入力ファイルを HTML として扱う
  -B,  --base=URL            HTML で入力されたファイル(-i -F)のリンクを指定した URL の相対 URL として扱う

◆ダウンロード
  -t,  --tries=NUMBER            リトライ回数の上限を指定 (0 は無制限).
       --retry-connrefused       接続を拒否されてもリトライする
  -O,  --output-document=FILE    FILE に文書を書きこむ
  -nc, --no-clobber              存在しているファイルをダウンロードで上書きしない
  -c,  --continue                部分的にダウンロードしたファイルの続きから始める
       --progress=TYPE           進行表示ゲージの種類を TYPE に指定する
  -N,  --timestamping            ローカルにあるファイルよりも新しいファイルだけ取得する
  -S,  --server-response         サーバの応答を表示する
       --spider                  何もダウンロードしない
  -T,  --timeout=SECONDS         全てのタイムアウトを SECONDS 秒に設定する
       --dns-timeout=SECS        DNS 問い合わせのタイムアウトを SECS 秒に設定する
       --connect-timeout=SECS    接続タイムアウトを SECS 秒に設定する
       --read-timeout=SECS       読み込みタイムアウトを SECS 秒に設定する
  -w,  --wait=SECONDS            ダウンロード毎に SECONDS 秒待つ
       --waitretry=SECONDS       リトライ毎に 1 0SECONDS 秒待つ
       --random-wait             ダウンロード毎に 0 02*WAIT 秒待つ
       --no-proxy                プロクシを使わない
  -Q,  --quota=NUMBER            ダウンロードするバイト数の上限を指定する
       --bind-address=ADDRESS    ローカルアドレスとして ADDRESS (ホスト名か IP) を使う
       --limit-rate=RATE         ダウンロード速度を RATE に制限する
       --no-dns-cache            DNS の問い合わせ結果をキャッシュしない
       --restrict-file-names=OS  OS が許しているファイル名に制限する
       --ignore-case             ファイル名/ディレクトリ名の比較で大文字小文字を無視する
  -4,  --inet4-only              IPv4 だけを使う
  -6,  --inet6-only              IPv6 だけを使う
       --prefer-family=FAMILY    指定したファミリ(IPv6, IPv4, none)で最初に接続する
       --user=USER               ftp, http のユーザ名を指定する
       --password=PASS           ftp, http のパスワードを指定する
       --ask-password            パスワードを別途入力する
       --no-iri                  IRI サポートを使わない
       --local-encoding=ENC      指定した ENC を IRI のローカルエンコーディングにする
       --remote-encoding=ENC     指定した ENC をデフォルトのリモートエンコーディングにする

◆ディレクトリ
  -nd, --no-directories           ディレクトリを作らない
  -x,  --force-directories        ディレクトリを強制的に作る
  -nH, --no-host-directories      ホスト名のディレクトリを作らない
       --protocol-directories     プロトコル名のディレクトリを作る
  -P,  --directory-prefix=PREFIX  ファイルを PREFIX/ 以下に保存する
       --cut-dirs=NUMBER          リモートディレクトリ名の NUMBER 階層分を無視する

◆HTTP オプション
       --http-user=USER        http ユーザ名として USER を使う
       --http-password=PASS    http パスワードとして PASS を使う
       --no-cache              サーバがキャッシュしたデータを許可しない
       --default-page=NAME     デフォルトのページ名を NAME に変更します。通常は `index.html' です
  -E,  --adjust-extension        HTML/CSS 文書は適切な拡張子で保存する
       --ignore-length         `Content-Length' ヘッダを無視する
       --header=STRING         送信するヘッダに STRING を追加する
       --max-redirect          ページで許可する最大転送回数
       --proxy-user=USER       プロクシユーザ名として USER を使う
       --proxy-password=PASS   プロクシパスワードとして PASS を使う
       --referer=URL           Referer を URL に設定する
       --save-headers          HTTP のヘッダをファイルに保存する
  -U,  --user-agent=AGENT      User-Agent として Wget/VERSION ではなく AGENT を使う
       --no-http-keep-alive    HTTP の keep-alive (持続的接続) 機能を使わない
       --no-cookies            クッキーを使わない
       --load-cookies=FILE     クッキーを FILE から読みこむ
       --save-cookies=FILE     クッキーを FILE に保存する
       --keep-session-cookies  セッションだけで用いるクッキーを保持する
       --post-data=STRING      POST メソッドを用いて STRING を送信する
       --post-file=FILE        POST メソッドを用いて FILE の中味を送信する
       --content-disposition   Content-Disposition ヘッダがあればローカルのファイル名として用いる (実験的)
       --auth-no-challenge     サーバからのチャレンジを待たずに、Basic認証の情報を送信します。

◆HTTPS (SSL/TLS) オプション
       --secure-protocol=PR     セキュアプロトコルを選択する (auto, SSLv2, SSLv3, TLSv1)
       --no-check-certificate   サーバ証明書を検証しない
       --certificate=FILE       クライアント証明書として FILE を使う
       --certificate-type=TYPE  クライアント証明書の種類を TYPE (PEM, DER) に設定する
       --private-key=FILE       秘密鍵として FILE を使う
       --private-key-type=TYPE  秘密鍵の種類を TYPE (PEM, DER) に設定する
       --ca-certificate=FILE    CA 証明書として FILE を使う
       --ca-directory=DIR       CA のハッシュリストが保持されているディレクトリを指定する
       --random-file=FILE       SSL PRNG の初期化データに使うファイルを指定する
       --egd-file=FILE          EGD ソケットとして FILE を使う

◆FTP オプション
       --ftp-user=USER         ftp ユーザとして USER を使う
       --ftp-password=PASS     ftp パスワードとして PASS を使う
       --no-remove-listing     `.listing' ファイルを削除しない
       --no-glob               FTP ファイル名のグロブを無効にする
       --no-passive-ftp        "passive" 転送モードを使わない
       --retr-symlinks         再帰取得中に、シンボリックリンクでリンクされた先のファイルを取得する

◆再帰ダウンロード
  -r,  --recursive          再帰ダウンロードを行う
  -l,  --level=NUMBER       再帰時の階層の最大の深さを NUMBER に設定する (0 で無制限)
       --delete-after       ダウンロード終了後、ダウンロードしたファイルを削除する
  -k,  --convert-links      HTML や CSS 中のリンクをローカルを指すように変更する
  -K,  --backup-converted   リンク変換前のファイルを .orig として保存する
  -m,  --mirror             -N -r -l 0 --no-remove-listing の省略形
  -p,  --page-requisites    HTML を表示するのに必要な全ての画像等も取得する
       --strict-comments    HTML 中のコメントの処理を厳密にする

◆再帰ダウンロード時のフィルタ
  -A,  --accept=LIST               ダウンロードする拡張子をコンマ区切りで指定する
  -R,  --reject=LIST               ダウンロードしない拡張子をコンマ区切りで指定する
  -D,  --domains=LIST              ダウンロードするドメインをコンマ区切りで指定する
       --exclude-domains=LIST      ダウンロードしないドメインをコンマ区切りで指定する
       --follow-ftp                HTML 文書中の FTP リンクも取得対象にする
       --follow-tags=LIST          取得対象にするタグ名をコンマ区切りで指定する
       --ignore-tags=LIST          取得対象にしないタグ名をコンマ区切りで指定する
  -H,  --span-hosts                再帰中に別のホストもダウンロード対象にする
  -L,  --relative                  相対リンクだけ取得対象にする
  -I,  --include-directories=LIST  取得対象にするディレクトリを指定する
  -X,  --exclude-directories=LIST  取得対象にしないディレクトリを指定する
  -np, --no-parent                 親ディレクトリを取得対象にしない