search
LoginSignup
4

More than 5 years have passed since last update.

posted at

updated at

Raspiで動かすvalue-domainのDDNSスクリプト

Raspi君でValue-domainのDDNSの更新させるためにスクリプト探したら良いのが有りました。

シンプルだけどIP変更チェック付きのValue DomainのDDNSアップデートスクリプト

こちらを参考にさせていただいて、若干カスタマイズしたので将来の自分の為に載せておきます。

主にCron定期実行時のログをSyslogに出す為にちょこちょこっといじりました。loggerの部分とか、Update用のWgetの結果をteeしてる所とかです。
あ、あと、設定ファイル名にハイフン使わずアンダースコアにしました。

#!/bin/bash

CONFIG_FILE='/etc/update_ddns.conf'
IP_CACHE_FILE='/tmp/update_ddns_ip'
DDNS_CACHE_FILE='/tmp/update_ddns_result'

# sources DOMAIN= , PASSWORD= and HOST=
source $CONFIG_FILE

old_ip=`[ -e $IP_CACHE_FILE ] && cat $IP_CACHE_FILE || echo ''`
new_ip=`wget --quiet -O - 'http://dyn.value-domain.com/cgi-bin/dyn.fcg?ip'`
if [ "$old_ip" = "$new_ip" ]; then
    echo "NO CHANGE ($new_ip)"
    logger -t UPDATE_DDNS "INFO: NO CHANGE ($new_ip)"
    exit 0
fi

url="http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=$DOMAIN&p=$PASSWORD&h=$HOST"
result=0
wget --quiet -O - "$url" 2>/dev/null | tee $DDNS_CACHE_FILE | grep 'status=0' >/dev/null && result=1

if (( !$result )); then
    echo `date` 'FAILED'
    logger -t UPDATE_DDNS "ERROR: FAILED result:" `cat $DDNS_CACHE_FILE`
    exit 1
fi

echo $new_ip > $IP_CACHE_FILE

echo "UPDATED ($new_ip)"
logger -t UPDATE_DDNS "INFO: UPDATED with new IP:$new_ip"
exit 0

設定ファイルの中身は参考にさせて頂いたものと同じです。

運用としては、10分毎にでもRootのCronとして動かそうと思ってます。
あ、標準出力も残したままなので、Cron入れる際は> /dev/nullとかしといたほうが良いと思います。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4