Check_my_global_IP_address

固定 IP アドレスではない契約の事務所でグローバルIPアドレスを監視し、変更があれば通知する必要があったので、スクリプトを書いてみた。

IP アドレスを確認する Web サービスとして dyndns.org のサービスを利用することにした。
http://checkip.dyndns.org/ にアクセスすると、以下の形でアクセス元の IP アドレスが表示される。

1
Current IP Address: XXX.XXX.XXX.XXX

コード

下記の機能を実装したスクリプトを作成する。

  1. テキストファイルから前回取得した IP アドレス(A)を読み込む
  2. http://checkip.dyndns.org/ から IP アドレス(B)を取得する
  3. (A)と(B)を比較し、異なる場合はテキストファイルに IP アドレスを書き込み、Chetwork にメッセージを送信する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash

DIR="/tmp"
FILE="address.txt"
ROOM_ID="xxxxxxxx"
TOKEN="CHATWORKAPI_TOKEN"

OLD_ADDRESS=`cat ${DIR}/${FILE}`
NEW_ADDRESS=`curl -s http://checkip.dyndns.org/ | sed -r 's;^.*Address: (.*)</body>.*$;\1;'`

echo ${OLD_ADDRESS}
echo ${NEW_ADDRESS}

if [ "${OLD_ADDRESS}" != "${NEW_ADDRESS}" ]; then
echo "${NEW_ADDRESS}" > "${DIR}"/"${FILE}"
/usr/bin/curl -X POST \
-H "X-ChatWorkToken: ${TOKEN}" \
-d "body=[info][title]IP Address is changed.[/title]${NEW_ADDRESS}[/info]" \
"https://api.chatwork.com/v2/rooms/${ROOM_ID}/messages"
fi

exit 0