MyDNS.jpへのIP通知

無料のダイナミックDNSであるMyDNS.jpを利用しているので、ISPから割り当てられた動的IPをMyDNS.jpへ通知するシェルスクリプトを作ってみた。

MyDNS.jpにIPを更新しに行く条件(or条件)

  • 現在割り当てられているIPが、前回更新したIPと異なる場合
  • 前回の更新処理が失敗していた場合
  • 前回の更新処理から5日を超えた場合

シェルスクリプトの作成

vi mydns-update.sh
#!/bin/bash

CURRENT_IP_FILE='/var/tmp/current_ip.log'
LOG_FILE='/var/tmp/ip_update.html'
prowldir='/share/prowl'

IP_ADDR_CHK='http://ieserver.net/ipcheck.shtml'
DDNS_UPDATE="http://www.mydns.jp/login.html"
USR='mydns9999'
PSW='xxxxxxxxxx'
STATUS='login_status = 1\.'

if [ -f ${CURRENT_IP_FILE} ]; then
	CURRENT=`cat ${CURRENT_IP_FILE}`
	CURRENT_IP=`echo ${CURRENT} | cut -d " " -f 3`
	CURRENT_DT=`echo ${CURRENT} | cut -d " " -f 1-2`
	CURRENT_RTN=`echo ${CURRENT} | cut -d " " -f 4`
else
	CURRENT_IP='0.0.0.0'
	CURRENT_DT='2000/01/01 00:00:00'
	CURRENT_RTN='ERROR'
fi

NEW_IP=`wget -q -O - ${IP_ADDR_CHK}`
NEW_DT=`date +"%Y/%m/%d %H:%M:%S"`

DIFF_DAY=`expr \( \`date -d"${NEW_DT}" +%s\` - \`date -d"${CURRENT_DT}" +%s\` \) / 86400`

if ( [ ${NEW_IP} != "0.0.0.0" ] && [ ${NEW_IP} != ${CURRENT_IP} ] ) \
|| [ ${CURRENT_RTN} = "ERROR" ] \
|| [ ${DIFF_DAY} -gt 5 ]; then
	wget -q --user=${USR} --password=${PSW} -O ${LOG_FILE} ${DDNS_UPDATE}
	if [ $? -eq 0 ] && grep -q "${STATUS}" ${LOG_FILE}; then
		echo "${NEW_DT} ${NEW_IP} OK" > ${CURRENT_IP_FILE}
		MSG="OK"
	else
		echo "${NEW_DT} ${CURRENT_IP} ERROR" > ${CURRENT_IP_FILE}
		MSG="ERROR"
	fi
	${prowldir}/prowl.pl \
		-apikeyfile=${prowldir}/apikey \
		-priority=-2 \
		-event="MyDNS-Update" \
		-notification="${MSG}  New IP = ${NEW_IP}  Old IP = ${CURRENT_IP}" 1> /dev/null 2>&1
fi

※9行目(USR)と10行目(PSW)でMyDNS.jpのユーザー名とパスワードを指定する。

※更新処理を走らせると以下の2つのファイルを作ります。

  • /var/tmp/current_ip.log・・・更新時の日付・時刻、IPアドレス、更新結果
  • /var/tmp/ip_update.html・・・更新時にMyDNS.jpから返されるHTML(login_status = 1.とあれば成功)

※更新結果をprowl.plでiPhoneに通知してます。不要な場合は5行目(prowldir=…)と40〜44行目(${prowldir}/prowl.pl…の行から5行分)を削除してください。

あとはcronで20分毎とかで登録してやればOK。
※最近Archにはcronが入ってないのでsystemd/Timerでスケジューリングするか、cronを新規インストール

crontab -e
6,26,46 * * * * ~/mydns-update.sh > /dev/null 2>&1

※この例では20分おきの6分/26分/46分に mydns-update.shを実行する

広告
MyDNS.jpへのIP通知」への1件のコメント
  1. anonymous より:

    ありがとうございます。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。