ドメインの異なる複数の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 0url_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=1985url_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の場合、何も出力されない場合があります。
リンクチェック対象が多いとそれなりに時間がかかります。この情報がお役にたてれば幸いです。