小ネタが続いてますが、今回も小ネタですw
Webサイトの改ざん検知を手軽にパパッと行いたい場合、単純にcurlなどで取得したファイルをdiffで比較するだけでも実現できます。
というわけで以下がコード。ここでは最終的にSlackに通知しています。
#!/bin/bash
#
# 簡易的な改ざん検知からのSlack投稿
#
# 対象ページ
TARGET_URL='https://blog.katsubemakito.net/'
# 投稿先のSlack URL
WEB_HOOK_URL='https://hooks.slack.com/services/xxxxxxxx/xxxxxxxx/xxxxxxxxxxxxxxxxxx'
# 保存先ディレクトリ
STORE_DIR='/home/katsube/'
#-----------------------------------
# 最新のHTMLを取得
#-----------------------------------
cd $STORE_DIR
curl -s $TARGET_URL -o current.html
if [ $? -ne 0 ]; then
echo "Can not get TARGET_URL: $TARGET_URL" >&2
exit 1
fi
#-----------------------------------
# 前回のファイルと比較する
#-----------------------------------
if [ -f ./prev1.html ]; then
result=`diff prev1.html current.html`
if [ -z ${result} ]; then
text="変化はありません"
else
text="<!channel> 変化がありました"
fi
# Slackに投げる
curl -X POST --data-urlencode "payload={\"text\": \"${text}\"}" $WEB_HOOK_URL
if [ $? -ne 0 ]; then
echo "Can not post Slack, diff is ${result}" >&2
exit 1
fi
fi
#-----------------------------------
# 今回取得したファイルの名称変更
#-----------------------------------
# 1世代残す
if [ -f ./prev1.html ]; then
mv prev1.html prev2.html
fi
mv current.html prev1.html
非常に簡易的な物ですので、実際に利用する場合は要件に応じてカスタマイズしてください。
続きを読む