ムッシューの日記

2人の子供とのお出かけネタから趣味の釣りネタなど

DDNS(ieServer)のIP自動更新スクリプト


自宅サーバを立てるためにieServerが提供しているDDNSを使っているのですが、停電とか電源抜けるとかで自宅のルータが再起動掛かるとグローバルIPが変わってしまい、外からアクセスできなくなることがあります。

出先でこうなると結構不便。

というわけで、自動でieServerにログインしてIPが登録しているものと違う場合は更新してくれるシェルスクリプト作ってみました。ログインしたら表示される登録しているIPと今のIPを比べて違う場合は登録のPOSTをしてくれるスクリプトです。
※ルータ配下のネットワークから実行する必要があります。

これをcronとかで自動実行させておけば勝手に復帰します。(ブログ記載時点では上手く動いております)

#! /bin/sh

export LANG=ja_JP.eucJP

USER_NAME="xxx" #ログインユーザー名を指定
PASSWORD="xxx" #ログインパスワードを指定
DOMAIN="xxx" #ドメインを指定(myhome.cxなど)

COOKIE_FILE="cookie.txt"

RESPONSE1=`curl -L -i -c $COOKIE_FILE -d username=$USER_NAME -d password=$PASSWORD -d domain=$DOMAIN -d login=login https://ieserver.net/cgi-bin/dip.cgi`

IFS_ORG="$IFS"
IFS=$'\n'

RESPONSE1_ARR=(`echo "$RESPONSE1"`)

IP1=`echo ${RESPONSE1_ARR[8]} | awk '{match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/); print substr($0,RSTART, RLENGTH)}'`
IP2=`echo ${RESPONSE1_ARR[15]} | awk '{match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/); print substr($0,RSTART, RLENGTH)}'`

if [ -z "$IP1" ]; then
 echo "IP1 is null."
 echo "Response is [$RESPONSE1]"
 exit 255;
fi

if [ -z "$IP2" ]; then
 echo "IP2 is null."
 echo "Response is [$RESPONSE1]"
 exit 255;
fi

if [ $IP1 != $IP2 ]; then
 echo "IP is different. Do update."
 RESPONSE2=`curl -L -i -c $COOKIE_FILE -d username=$USER_NAME -d password=$PASSWORD -d domain=$DOMAIN -d updatehost=updatehost https://ieserver.net/cgi-bin/dip.cgi`
 echo "Response is [$RESPONSE2]"
fi

IFS="$IFS_ORG"

次へ 投稿

前へ 投稿

© 2017 ムッシューの日記

テーマの著者 Anders Norén