1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-05-11

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とかしといたほうが良いと思います。

1
4
0

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
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?