自宅サーバのubuntu化(その2)

サーバubuntu化の続き

(自分的に)一番大事なソースを紛失していたことに気付くorz
ddo.jpを利用しているのだが、IP更新の為のシェルスクリプト
これを無くした。

シェルスクリプトをスラスラ書けるならいいけど、
後にも先にも1回しか書いたこと無い。

手順だけはうっすら記憶に残っているので思い出す。

基本はこんな流れ...

  • ルータからIPアドレスの変更のログをrouter.logへ転送
  • cronにてrouter.logを数分おきにチェック
  • router.logの最後行からIPアドレスを抽出 -> $new_ip
  • ip_address.datから保存IPアドレスを読み込み -> $old_ip
  • $new_ipと$old_ipを比較
  • IPアドレスが変わっているなら更新用URLにアクセス&$new_ipをip_address.datに保存。

あとは変更をログに記録したりとか...

以下、泣きながら他の人のサイトを参考にしたりしながら書いたソース

#!/bin/bash

MYUSERNAME='ドメイン名'
MYPASSWORD='パスワード'

# IPアドレスを保存しておくファイル
IP_ADDR_FILE='/etc/ip_check.d/ip_addr.dat'

# wgetを実行したときの結果を放り込んでおくファイル
WGET_TMP_FILE='/etc/ip_check.d/wget_tmp.dat'

# IPアドレスの変更を記録するログ
IP_CHANGE_LOG='/var/log/ip_change.log'

# ルータから転送されるログ
ROUTER_LOG='/var/log/router.log'

# ルータログの最後の行を取得
last_log=`tail -n 1 $ROUTER_LOG`

# 6番目の単語を取得し、getが含まれているなら更新処理
log_key=`echo $last_log | awk '{print $6}'`
if [ $log_key = "get" ];
then
    new_ip=`echo $last_log | awk '{print $7}' | sed -e "s/IP://"`
    old_ip=`cat $IP_ADDR_FILE`

    if [ $old_ip = "" ];
    then
        old_ip='0.0.0.0'
    fi

    if [ $new_ip != $old_ip ];
    then
        echo $new_ip > $IP_ADDR_FILE
        echo `date` "$old_ip -> $new_ip" >> $IP_CHANGE_LOG
        wget -q -O $WGET_TMP_FILE "http://free.ddo.jp/dnsupdate.php?dn=$MYUSERNAME&pw=$MYPASSWORD"   
    fi
fi


参考にさせて頂いたサイト:
スクリプト:シェルスクリプト:ダイナミックDNS更新|ADSL + 自宅 Linux サーバ
ダイナミックDNS(DDNS)ddo.jp(Dynamic Do!.jp) 自動登録スクリプト


本:
オライリーBash入門も持ってるけど、読むのはこっちの方が楽。
久しぶりにお世話になりました。


awkとかsedとかホント憶えられん。
ログの書き出しは/usr/bin/loggerを使うべきなんやろか?
詳しい人教えて!突っ込んで!