raspi:Value-Domain DDNS

そのまま使えたので、有り難く頂戴しました。
(参考)
https://qiita.com/kouichirou/items/b89beaf27942aadd9307

/usr/local/sbin/update_ddns.sh

#!/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

設定ファイル
HOSTについて、更新するドメインのホスト名を指定します。DNSレコード編集画面のホスト名と全く同じ仕様です。
例: *(全ホスト)、www、指定なしはホスト名なし
/etc/update_ddns.conf

DOMAIN=[Domain name]
PASSWORD=[Domain Password] 
HOST=*

Scriptと設定ファイルの設置が出来れば、起動してみます。

# /usr/local/sbin/update_ddns.sh
UPDATED (xxx.xxx.xxx.xxx)

アップデート出来たようです。
このあたりの処理で、同一IP ADDRESSの場合は、wgetの処理は行わないようです。

if [ "$old_ip" = "$new_ip" ]; then
    echo "NO CHANGE ($new_ip)"
    logger -t UPDATE_DDNS "INFO: NO CHANGE ($new_ip)"
    exit 0

updateの確認が出来たので、cronでまわすように設定します。

# crontab -e
*/10 * * * *    /usr/local/sbin/update_ddns.sh > /dev/null 2>&1

念のため、cronを再起動しておこう。

# service cron restart

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です