NVR510/500に「カスタムGUI(CUSTOM GUI)」機能がある事を知っていたが、「簡単設定機能」や「ダッシュボード」をユーザー毎にカスタムページ化することに意味があるのか?程度の認識でいた。「NVR510 / NVR500 のDHCPv6-PDをリモートで再取得させる」作成時に再度内容を確認してみた。
「ホストからルーターへの設定転送」では、管理者権限で得たセッションIDを使ってコマンドをPOST実行する例が記載されていた。もう少し読み進んでみると「設定用APIをブラウザ以外のHTTPクライアントから利用する」を利用するとコマンドを実行できそう。試してみる。
(1)CUSTOM-GUI設定
(2)CUSTOM-GUIでコマンド実行
(3)luaスクリプトを実行
luaスクリプトをCUSTOM-GUIで実行出来るが、スクリプト出力を受けることが出来ない。「lua sd1:/lua/RebindDHCPv6-PD.lua」の起動結果出力は無い。「show lua status」で実行状態や履歴情報が得られる。
DHCPv6-PDのPrefix情報取得に時間が掛かるので、スクリプト結果が表示出来ないとsleepなどで調整が必要となる。
(4)DHCPv6-PDを再取得
「ホストからルーターへの設定転送」では、管理者権限で得たセッションIDを使ってコマンドをPOST実行する例が記載されていた。もう少し読み進んでみると「設定用APIをブラウザ以外のHTTPクライアントから利用する」を利用するとコマンドを実行できそう。試してみる。
(1)CUSTOM-GUI設定
NVR500.config/NVR510.config
httpd custom-gui use on
httpd custom-gui api use on
httpd custom-gui api password JYUMON
(2)CUSTOM-GUIでコマンド実行
wget -O - --post-data="show status ipv6 dhcp" http://nvr500-lan2.familyname/custom/api?password=JYUMON
wget -O - --post-data=$'show environment\r\nshow status ipv6 dhcp\r\n' http://nvr500-lan2.familyname/custom/api?password=JYUMON
wget -q -O - --post-data="show status ipv6 dhcp" http://nvr500-lan2.familyname/custom/api?password=JYUMON | grep prefix
(3)luaスクリプトを実行
wget -O - --post-data="lua sd1:/lua/RebindDHCPv6-PD.lua" http://nvr500-lan2.familyname/custom/api?password=JYUMON
RebindDHCPv6-PD.lua
--[[
Aug.2 '2021 Rabbit51
RebindDHCPv6-PD.lua
]]
---------------------------------------------------------------
-- /custom/api w/ http post--
---------------------------------------------------------------
rtn,str = rt.command("syslog debug on","off")
rtn,str = rt.command("ipv6 lan2 dhcp service client","on")
if rtn then
rtn,array = rt.syslogwatch("%[IPv6%] prefix",1,10)
if rtn > 0 then
pf = string.match(array[1],"%[IPv6%] prefix (%x+:%x+:%x+:%x+::/60)")
rtn,str = rt.syslog("info","[DHCPv6-PD] prefix: " .. pf)
print("[DHCPv6-PD] prefix: " .. pf)
else
rtn,str = rt.syslog("info","[DHCPv6-PD] timeout")
print("[DHCPv6-PD] timeout")
end
end
rtn,str = rt.command("syslog debug off")
luaスクリプトをCUSTOM-GUIで実行出来るが、スクリプト出力を受けることが出来ない。「lua sd1:/lua/RebindDHCPv6-PD.lua」の起動結果出力は無い。「show lua status」で実行状態や履歴情報が得られる。
DHCPv6-PDのPrefix情報取得に時間が掛かるので、スクリプト結果が表示出来ないとsleepなどで調整が必要となる。
(4)DHCPv6-PDを再取得
rebind.sh
#!/bin/sh
wget -q -O - --post-data="ipv6 lan2 dhcp service client" http://nvr500-lan2.familyname/custom/api?password=JYUMON
while [ "$pf" = "" ]
do
sleep 1
pf=`wget -q -O - --post-data="show status ipv6 dhcp" http://nvr500-lan2.familyname/custom/api?password=JYUMON | grep prefix | sed 's/ *prefix: //'`
echo -n "."
done
echo $pf