更新があったらメールで知らせる

crontab等に /path/to/watch.sh 'https://example.com' のように登録しておけばサイトの更新があったらメールで差分を知らせてくれるbashスクリプトを(bashのマニュアルを調べながら)書いた。あらかじめ作業用のディレクトリ(ここでは /home/okumura/watch)を作っておく。

#! /bin/bash

if [ $# -ne 1 ]; then
    exit 1
fi

export LC_ALL=en_US
cd /home/okumura/watch

uri=$1

md=`echo -n $uri | md5sum | cut -d ' ' -f 1`

if [ -d $md ]; then
    cd $md
    f=`ls`
    cp -fp $f .$f
    wget -N $uri 2>.out
    if grep saved .out; then
	if ! diff .$f $f >.$f.diff; then
            cat .$f.diff | mail -s "Changed: $uri" okumura@example.org
	fi
    fi
else
    if [ -e $md ]; then
	rm -f $md
    fi
    mkdir $md
    cd $md
    wget -N $uri 2>.out
fi

URLから生成したハッシュ値のディレクトリを作り,その中で wget -N する。新しいファイルが取得され,なおかつ差分があれば,メールで報告する。