みなさんこんにちは、テックデザインの河野です。
ヤマハルーターはLuaスクリプトで様々なカスタマイズができることはよく知られていますが、Luaスクリプトを手軽に利用できるEMFSという機能はご存知でしょうか?EMFS(EMbedded File System?)は2018年にリリースされた機能でLuaスクリプトを活用するうえで非常に便利な機能なのですが、ヤマハネットワーク機器の技術資料以外にEMFSについて解説をしている資料はほとんど見当たりません。そこで今回はこのEMFSについて詳しく解説します。
EMFSとは
読み出し専用のファイルをconfig内に保存できるファイルシステムで、Luaスクリプトやマクロをconfigファイルと一体で扱うことができます。ルーター上でコーディングできるため、RTFS使用時のPCでLuaスクリプトを作成してファイルをTFTP等で転送するというプロセスがなく、ちょっとしたスクリプトを手軽に実行するのに最適です。
内蔵不揮発メモリー内に保存する点ではRTFSと同じですが、RTFSはPCのファイルシステムと同様にディレクトリ構造を持つ汎用的なストレージとして利用できる一方、EMFSは読み出し専用なのでLuaスクリプトのAPIからファイルの作成、変更、削除を行うことはできません(表1)。また、RTFSは比較的古い機種から対応しているのに対して、EMFSはルーター現行機種のみの対応となります(表2)。
表1 EMFSとRTFSの機能比較
EMFS | RTFS | |
---|---|---|
内蔵不揮発メモリー内での保存先 | config | RTFS領域 |
読み出し | 〇 | 〇 |
書き込み | × | 〇 |
ディレクトリ構造 | × | 〇 |
ルートディレクトリ | emfs:/ | / |
表2 対応機種一覧
EMFS | RTFS | |
---|---|---|
vRX | Rev.19.00.01以降 | △ *1 |
RTX830 | Rev.15.02.03以降 | Rev.15.02.01以降 |
NVR510 | Rev.15.01.13以降 | Rev.15.01.02以降 |
NVR700W | Rev.15.00.14以降 | Rev.15.00.02以降 |
RTX1210 | Rev.14.01.26以降 | Rev.14.01.05以降 |
RTX5000 | Rev.14.00.26以降 | Rev.14.00.08以降 |
RTX3500 | Rev.14.00.26以降 | Rev.14.00.08以降 |
FWX120 | × | Rev.11.03.02以降 |
RTX810 | × | Rev.11.01.04以降 |
NVR500 | × | Rev.11.00.06以降 |
RTX1200 | × | Rev.10.01.16以降 |
SRT100 | × | Rev.10.00.52以降 |
YSL-V810 | × | Rev.1.03.01以降 |
※1:vRXのファイルシステムは「ユーザー領域」と呼ばれ、RTFSとほぼ同様に利用可能ですがrtfs関連コマンドは実装されていません(2020年12月1日現在)。
EMFSを使ってみよう
EMFS上にファイルを作成、保存する際はembedded file
コマンドを使用し、no embedded file
で作成したファイルを削除することができます。まずはEMFSの解説ページ(http://www.rtpro.yamaha.co.jp/RT/docs/emfs/index.html)の例にならって簡単な内容のテキストファイルを作成してみます。
# embedded file test.txt <<EOF
This is a test file.
EOF
show file list
コマンドで確認すると、test.txtが作成されているのが確認できます。表示される時間はファイルの作成時間ではなく、このコマンドを実行した日時になります。
# show file list emfs:/
2020/11/25 14:36:49 21 test.txt
次にLinuxのcatコマンドのようにファイルの内容を表示するLuaスクリプトを作成します。
# embedded file cat <<EOF
f=io.open(arg[1])
for l in f:lines() do
print(l)
end
f:close()
EOF
# show file list emfs:/
2020/11/25 14:40:10 65 cat
2020/11/25 14:40:10 21 test.txt
show config
でconfigの内容を表示すると、どちらもconfigの最後尾付近に直接記述されているのを確認することができます。
# show config
(省略)
embedded file test.txt <<EOF
This is a test file.
EOF
embedded file cat <<EOF
f=io.open(arg[1])
for l in f:lines() do
print(l)
end
f:close()
EOF
Luaスクリプトとして実行してtext.txtの内容が表示されることを確認してみます。
# lua emfs:/cat emfs:/test.txt
This is a test file.
スクリプトを使いやすくするため、alias
コマンドでlua emfs:/cat
コマンドをcatという名前でエイリアスに設定します。エイリアスは@を付けることで実行することができます。
# #エイリアスの設定
# alias cat='lua emfs:/cat'
# #エイリアスの実行
# @cat emfs:/test.txt
This is a test file.
このcatスクリプトを使うとRTFS領域のファイル内容も表示できるので、RTFS領域のファイル内容を確認するためにTFTPなどでファイルをダウンロードする手間が省けます。echoやgrepのようにヤマハルーターの基本コマンドとして実装してもらえると嬉しいLinuxコマンドのひとつですね。
LANマップの機器情報を取りだしてみる
ここからは便利に使うためのカスタマイズ例の紹介です。CLIでもshow lan-map interface detail
コマンドでLANマップの端末情報を確認することができますが、端末の情報が複数行にわたるためgrepでは必要な情報だけをピンポイントで抽出することが難しく、データの2次利用もしづらい形式です。LANマップの機器情報はRTFS領域の/lanmap/devinfo_master.csvに保存されているので、先ほどのcatスクリプトを少し改造してこのCSVからワンライナーで目的の端末情報を抽出するLuaスクリプトを作ってみます。
# embedded file devinfo <<EOF
f=io.open("/lanmap/devinfo_master.csv")
for l in f:lines() do
if (arg[1]) then
if string.match(l, arg[1]) then
print(l)
end
else
print(l)
end
end
f:close()
EOF
# #エイリアス設定
# alias devinfo="lua emfs:/devinfo"
エイリアス@devinfoの引数にMACアドレスを与えると該当する端末の情報のみを表示し、引数なしで実行した場合はdevinfo_master.csvの内容を表示します。devinfo_master.csvの文字コードはShift-JISなので、2バイト文字が文字化けする場合はターミナルの文字コードをShift-JISに変更してください。
#情報を取得したい機器のMACアドレスから情報を抽出
@devinfo 6c:56:97:xx:xx:xx
6c:56:97:xx:xx:xx,03010,Amazon,Echo dot,amazon-123456789,,寝室,on,
CSVには値しかなく機器の種類もコード表示なので、人間の見やすさを優先するのであれば、
show lan-map interface detail
の結果をlessコマンドに渡して検索するのが良いでしょう。
show lan-map interface detail | less
[6c:56:97:xx:xx:xx]
IPアドレス : 192.168.100.xx
検出時刻 : 2020/11/25 15:08:06
種類 : Speaker
メーカー : Amazon
機種名 : Echo dot
機器名 : amazon-123456789
OS :
コメント : 寝室
スナップショット : on
SSID : ********
周波数 : 2.4Ghz
(以下略)
/6c:56:97:xx:xx:xx (Enter)
Luaスクリプトを使ってDIYで必要な機能を追加できるのはヤマハルーターの大きな魅力ですね。
関連記事
- なかせのコラム ヤマハのコラム 更新情報
ヤマハ株式会社が「Interop Tokyo 2023」に出展!SCSKも参加予定です!
- さくらのコラム ヤマハのコラム 更新情報
ヤマハ出展の「第14回 EDIX(教育総合展)東京」 訪問レポート
- おがわのコラム ヤマハのコラム 技術コラム
ヤマハNWファンミーティング2023 Spring @Youtubeライブ アンケートQ&A その3
- かとうのコラム コラム はじめてのヤマハUTX ヤマハのコラム 更新情報
はじめてのヤマハUTX 第3回 ~UTXシリーズ紹介②~
- かとうのコラム コラム はじめてのヤマハUTX ヤマハのコラム 更新情報
はじめてのヤマハUTX 第3回 ~UTXシリーズ紹介①~