🎎

ヤマハルーター LuaでPingを送信するときの -c について

2024/03/03に公開

Open IPv6 DDNS for NGN

Pingの送信でDDNSの更新ができる機能、便利ですよね。

NTPクライアント機能を使ってDDNSの更新ができるのも面白いですよね。
実際にNTPサーバーとして動作しているので、現在時刻が返ってくるんですよ。

そういうわけで、
「OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト」サービスのお話です。

https://i.open.ad.jp/


ヤマハルーターでの設定例

DDNSホスト名に登録されているIPv6アドレスを更新されるようにする方法について。

設定自体はとても簡単で、サービスサイトに設定例があるのでそれを見ればすぐにできるかと思います。
気になったのは設定方法ではなく、設定例の部分です。

rtx config
# OPEN IPv6 ダイナミック DNS ホストの自動更新用パケットの送信設定
# 以下の部分は、実際に作成された DDNS ホスト名の「更新専用ホスト」名に置き換えてください
schedule at 1 *:*:00 * lua -e 'rt.command("ping6 update-0123456789abcdefff.i.open.ad.jp")'

このコマンド
ping6 update-0123456789abcdefff.i.open.ad.jp

-c 1 省略してもいいの……?

https://i.open.ad.jp/config/yamaha.aspx

前提

ヤマハルーターを使用していない方に説明すると、コンソールから普通に実行した場合
Ctrl + Cを入力するまで繰り返すようになっています。

ping

  • count
    • [設定値] : 実行回数 (1..21474836)
    • [初期値] : Ctrl+c キーが入力されるまで繰り返す

[説明]
指定した宛先に対して ICMPv6 Echo Request を送信する。
スコープ識別子は、show ipv6 address コマンドで表示できる。
count パラメータを省略すると、Ctrl+c キーを入力するまで実行を継続する。
-w オプションを指定した時には、次のパケットを送信するまでの間に相手からの返事を確認できなかった時にはその旨のメッセージを表示する。-w オプションを指定していない時には、パケットが受信できなくても何もメッセージを表示しない。

https://www.rtpro.yamaha.co.jp/RT/manual/rt-common/operation/ping6.html

そういうわけで、Luaスクリプトの場合も同様に繰り返すのではないかと心配したわけです……。
でもこうやって設定例にある以上、間違っているとも思えないし……気になります。

本題

で、実際に試してみました。

lua -e 'print(rt.command("ping6 google.com"))'

結果

まあ問題ないんだろうなと思った通り、1個のパケットしか送信していないので杞憂でした。
悩んだら実際に動かしてみた方が早いですね。

lua

まとめ

Luaスクリプトで ping/ping6 を使用する場合、[-c count] を省略すると実行回数は 1 回。

ということで、安心してcountを省略しようと思います。


記事

Lua言語のライブラリ関数のページに説明が書いてあります。

以下のコマンドは、通常とは動作が異なります。

  • ping、ping6コマンド
    COUNTオプションを指定しなかった場合、通常であれば、Ctrl-Cで中断されるまでICMP Echoパケットを送信し続けますが、rt.commandから実行された場合には、COUNTオプションを省略するとCOUNTオプションに1が指定されたものとして、1回だけICMP Echoを送信します。COUNTオプションがあれば、指定回数だけICMP Echoを送信します。

https://www.rtpro.yamaha.co.jp/RT/docs/lua/tutorial/library.html#rt.command

すっきり。


ヤマハルーターのLuaスクリプト機能

概要
https://www.rtpro.yamaha.co.jp/RT/docs/lua/

チュートリアル
https://www.rtpro.yamaha.co.jp/RT/docs/lua/tutorial/

Discussion