mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Bash - Web サイト(HTML)差異チェックスクリプト!

[ サーバ構築 ] [ Linux, bash, シェル ]

こんばんは。

Web サイトの表示内容がいつもと変わっていないかチェックするための簡単な Bash スクリプトです。

何か事象が発生した場合のみ Web サイトの表示が変更されるような場合、変更されていないかを都度手動でチェックしていては骨が折れます。
スクリプトを作成して cron で定期的に起動させれば、後でまとめて確認もできます。

0. 前提条件

  • Linux Mint 17(64bit), CentOS 7.0(64bit) での作業を想定。
  • Bash のバージョンは、4.3.11(Linux Mint), 4.2.45(CentOS) を想定。

1. Bash スクリプト作成

以下のような簡単な Bash スクリプトを作成。
(1回目の起動で比較元になる HTML を取得、2回目以降保存 HTML との差異をチェック)

check_html.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/bash

# 定数定義
URL="http://www.foo.xxx/bar/baz/"  # チェックした Web サイトの URL
FILE_S="/path/to/saved.html"       # 前回取得 HTML のファイル
FILE_C="/path/to/current.html"     # 今回取得 HTML のファイル

# 当スクリプトの存在ディレクトリへ移動
cd /path/to/

# 前回取得 HTML ファイルが存在しなければ、新たに取得して終了
if [ ! -e $FILE_S ]; then
    curl -o $FILE_S $URL > /dev/null
    exit
fi

# 新規に HTML を取得
curl -o $FILE_C $URL > /dev/null

# 前回取得 HTML と今回取得 HTML を比較
diff $FILE_S $FILE_C

# ファイルに差異があれば、
# 今回取得ファイルをタイムスタンプ付きで保存
# さらに、今回取得ファイルを前回取得ファイルとして保存
if [ $? -ne 0 ]; then
    dt=`date '+%y%m%d_%H%M%S'`
    cp $FILE_C data/${dt}.html
    cp $FILE_C $FILE_S
fi

2. cron 登録

以下のように cron 登録。
(以下は5分ごとにチェックする設定)

/etc/cron.d/check_html
1
*/5 * * * * root /path/to/check_html.sh > /dev/null 2>&1

3. 動作確認

cron により定期的にチェックされ、HTML に差異があればタイムスタンプ付きのファイルが保存されることを確認する。


当方の場合、Web スクレイピングしようと考えた場合に、実際どのような HTML が発行される可能性があるのかを事前に調査するために使用しています。

以上。

Comments