それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

openwrt のddnsで特定のドメインをコマンドから更新するには

OpenWrt のDDNSの管理スクリプトを使って、ドメインをの更新を確認することができる。

openwrt の特定の ドメインを更新するには

設定をテストすることが出来る。

/usr/lib/ddns/dynamic_dns_lucihelper.sh
/usr/lib/ddns/dynamic_dns_updater.sh

たとえば、ddnsのためのglobal_ipチェックをするには

/usr/lib/ddns/dynamic_dns_lucihelper.sh  -u https://api.ipify.org/  -v 3  get_local_ip
 232950       : -----> timeout 3 -- get_current_ip IP
 232950       : Detect current IP on 'web'
 232950       : #> /usr/bin/curl -RsS -o /var/run/ddns/lucihelper.27334.dat --stderr /var/run/ddns/lucihelper.27334.err --noproxy '*' 'https://api.ipify.org/'
 232950       : Current IP 'xxx.80.146.218' detected on web at 'https://api.ipify.org/'

更新のテスト

たとえば、NAME=cloudflare2 のDDNSエントリを更新するテストする (NAME は WEBで指定した名前のこと)

/usr/lib/ddns/dynamic_dns_updater.sh -d -v 2  -S cloudflare2 start

ただし、実態は dynamic_dns_functions.sh なので注意。また、これは本当にメインの常駐プロセス用のDDNSなので、他の常駐プロセスはSTOPするので注意。

再起動して更新する

全部の設定を再起動する

/usr/lib/ddns/dynamic_dns_lucihelper.sh restart

指定した設定を再起動する

/usr/lib/ddns/dynamic_dns_lucihelper.sh -S my_cloudflare2 restart

再起動すれば、設定は更新される。

設定名の調べ方

設定名を出すには

uci -q show ddns # ddns設定を表示
uci -q show ddns | grep -oP '(?<=ddns\.)[^.]+(?=\.)'  | sort | uniq # ddns設定から名前を取り出す。

ただし、grep -P には PCRE対応のgrep( busyboxy ではない)が必要

## インストール済みの grep の確認
root@OpenWrt:~# ll /bin/grep
lrwxrwxrwx    1 root     root            21 Oct 17  2023 /bin/grep -> /usr/libexec/grep-gnu*