DNS自動更新

IPアドレス更新スクリプト(MYDNS)

MyDNSの自動更新がおかしかったので、久しぶりにbashの組み直し。

ちょっと整形したので、このままでは動かない可能性あり。

#!/bin/bash

file="/tmp/ipaddress"
logfile="/var/log/ipchangelog"
DNSID="自分のID"
DNSPW="自分のPW"

#現在のIPを取得する.
newip=`curl checkip.amazonaws.com`
#チェック用 
#echo -e "newip=$newip" 

#今のIPアドレスを取得
nowip=`dig @ns0.mydns.jp (自分のURL) +short`
#チェック
#echo "nowip=$nowip"

#IPアドレスを取得できたか判定
ipcheck=`echo $newip | grep "Application Error"`
#チェック
#echo "ipcheck=$ipcheck"

#一日以上更新していなければ、更新する。
chdate=`tail -n 1 $logfile | sed -E "s/([0-9]{4}\-[0-9]{2}\-[0-9]{2})\s.*/\1/"`
nowtime=`date +"%Y-%m-%d"`
if [ "$chdate" != "$nowtime" ]; then
#日付が異なる
#チェック
    # echo "chip=$chip"
    # echo "nowtime=$nowtime"
    log=`wget -O - "https://www.mydns.jp/directip.html?MID=$DNSID&PWD=$DNSPW&IPV4ADDR=$newip" | grep "REMOTE ADDRESS" | sed -E "s/[^0-9]+([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*/\1/"`
    # echo "日付変更による更新"
    #チェック
    #logがnullならIP更新できなかったと言うこと。
    # echo "log=$log"
    
    if [ -z "$log" ]; then
        echo "`date +"%Y-%m-%d %H:%M:%S"` MyDNS Error" >> $logfile
        # echo "更新できず"
    else
        echo -e "`date +"%Y-%m-%d %H:%M:%S"` /$nowip \t--->\t$newip\tChange" >> $logfile
    # echo "更新OK"
    exit 1
    fi

fi

#IPがとれたかどうかのIF処理
if [ "$ipcheck" != "" ]; then
    echo -e "`date +"%Y-%m-%d %H:%M:%S"`\t Errer Don't Get new IPaddress" >> $logfile
    exit 1
fi

#ここまで現在のIPアドレスについて。

#これから古いIPアドレスについて。
#nowip=`dig @ns0.mydns.jp (自分のURL) +short`
#チェック
#echo "nowip=$nowip"

#IPが取得できたかのIF処理
ipcheck=`echo $nowip | grep -E "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"`

if [ -z $ipcheck ]; then
    echo "`date +"%Y-%m-%d %H:%M:%S"`\t Command dig Error" >> $logfile
    exit 1
fi

#アドレス更新
if [ "$chdate" = "$nowtime" ]; then
    #日付は同じ
    #IPアドレスが変わっていたら更新する。
    if [ "$nowip" != "$newip" ]; then
        log=`wget -O - "https://www.mydns.jp/directip.html?MID=$DNSID&PWD=$DNSPW&IPV4ADDR=$newip" | grep "REMOTE ADDRESS" | sed -E "s/[^0-9]+([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*/\1/"`
        # echo "IPアドレス変更による更新"
        echo -e "`date +"%Y-%m-%d %H:%M:%S"` $nowip \t--->\t$newip\tChange" >> $logfile
        #チェック
        # echo "log=$log"
    else
        echo -e "`date +"%Y-%m-%d %H:%M:%S"` $nowip \t---> Continue" >> $logfile
        #同日、IP変化なし
    fi
fi

徒然なるままに書いた駄文日記