自宅サーバの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入門も持ってるけど、読むのはこっちの方が楽。
久しぶりにお世話になりました。
シェルの基本テクニック <ホップ・ステップ・ジャンプ> Linux world favorite series
- 作者: 西村めぐみ
- 出版社/メーカー: IDGジャパン
- 発売日: 2004/11
- メディア: ムック
- クリック: 23回
- この商品を含むブログ (14件) を見る
awkとかsedとかホント憶えられん。
ログの書き出しは/usr/bin/loggerを使うべきなんやろか?
詳しい人教えて!突っ込んで!