DNS自動更新

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

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

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

<br />
#!/bin/bash</p>
<p>file=&quot;/tmp/ipaddress&quot;<br />
logfile=&quot;/var/log/ipchangelog&quot;<br />
DNSID=&quot;自分のID&quot;<br />
DNSPW=&quot;自分のPW&quot;</p>
<p>#現在のIPを取得する.<br />
newip=`curl checkip.amazonaws.com`<br />
#チェック用<br />
#echo -e &quot;newip=$newip&quot; </p>
<p>#今のIPアドレスを取得<br />
nowip=`dig @ns0.mydns.jp (自分のURL) +short`<br />
#チェック<br />
#echo &quot;nowip=$nowip&quot;</p>
<p>#IPアドレスを取得できたか判定<br />
ipcheck=`echo $newip | grep &quot;Application Error&quot;`<br />
#チェック<br />
#echo &quot;ipcheck=$ipcheck&quot;</p>
<p>#一日以上更新していなければ、更新する。<br />
chdate=`tail -n 1 $logfile | sed -E &quot;s/([0-9]{4}\-[0-9]{2}\-[0-9]{2})\s.*/\1/&quot;`<br />
nowtime=`date +&quot;%Y-%m-%d&quot;`<br />
if [ &quot;$chdate&quot; != &quot;$nowtime&quot; ]; then<br />
#日付が異なる<br />
#チェック<br />
    # echo &quot;chip=$chip&quot;<br />
    # echo &quot;nowtime=$nowtime&quot;<br />
    log=`wget -O - &quot;https://www.mydns.jp/directip.html?MID=$DNSID&amp;PWD=$DNSPW&amp;IPV4ADDR=$newip&quot; | grep &quot;REMOTE ADDRESS&quot; | sed -E &quot;s/[^0-9]+([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*/\1/&quot;`<br />
    # echo &quot;日付変更による更新&quot;<br />
    #チェック<br />
    #logがnullならIP更新できなかったと言うこと。<br />
    # echo &quot;log=$log&quot;</p>
<p>    if [ -z &quot;$log&quot; ]; then<br />
        echo &quot;`date +&quot;%Y-%m-%d %H:%M:%S&quot;` MyDNS Error&quot; &gt;&gt; $logfile<br />
        # echo &quot;更新できず&quot;<br />
    else<br />
        echo -e &quot;`date +&quot;%Y-%m-%d %H:%M:%S&quot;` /$nowip \t---&gt;\t$newip\tChange&quot; &gt;&gt; $logfile<br />
    # echo &quot;更新OK&quot;<br />
    exit 1<br />
    fi</p>
<p>fi</p>
<p>#IPがとれたかどうかのIF処理<br />
if [ &quot;$ipcheck&quot; != &quot;&quot; ]; then<br />
    echo -e &quot;`date +&quot;%Y-%m-%d %H:%M:%S&quot;`\t Errer Don't Get new IPaddress&quot; &gt;&gt; $logfile<br />
    exit 1<br />
fi</p>
<p>#ここまで現在のIPアドレスについて。</p>
<p>#これから古いIPアドレスについて。<br />
#nowip=`dig @ns0.mydns.jp (自分のURL) +short`<br />
#チェック<br />
#echo &quot;nowip=$nowip&quot;</p>
<p>#IPが取得できたかのIF処理<br />
ipcheck=`echo $nowip | grep -E &quot;[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+&quot;`</p>
<p>if [ -z $ipcheck ]; then<br />
    echo &quot;`date +&quot;%Y-%m-%d %H:%M:%S&quot;`\t Command dig Error&quot; &gt;&gt; $logfile<br />
    exit 1<br />
fi</p>
<p>#アドレス更新<br />
if [ &quot;$chdate&quot; = &quot;$nowtime&quot; ]; then<br />
    #日付は同じ<br />
    #IPアドレスが変わっていたら更新する。<br />
    if [ &quot;$nowip&quot; != &quot;$newip&quot; ]; then<br />
        log=`wget -O - &quot;https://www.mydns.jp/directip.html?MID=$DNSID&amp;PWD=$DNSPW&amp;IPV4ADDR=$newip&quot; | grep &quot;REMOTE ADDRESS&quot; | sed -E &quot;s/[^0-9]+([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*/\1/&quot;`<br />
        # echo &quot;IPアドレス変更による更新&quot;<br />
        echo -e &quot;`date +&quot;%Y-%m-%d %H:%M:%S&quot;` $nowip \t---&gt;\t$newip\tChange&quot; &gt;&gt; $logfile<br />
        #チェック<br />
        # echo &quot;log=$log&quot;<br />
    else<br />
        echo -e &quot;`date +&quot;%Y-%m-%d %H:%M:%S&quot;` $nowip \t---&gt; Continue&quot; &gt;&gt; $logfile<br />
        #同日、IP変化なし<br />
    fi<br />
fi<br />

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