久しぶりにLinuxのネタでも書いてみようかと。 Linux Box を Router として使うのに便利な Vyos (旧 vyatta) で、ちょいと自分たちが調べたい統計を取ろうと思い、いろいろと調べていました。 Vyos の場合、Console や SSH などでログインをすると、LinuxのBashの代わりに /bin/vbash というBashっぽいものが動き、ネットワーク機器に有りがちなコマンドインターフェースが提供されています。 このコマンドインターフェースではルータとしての機能設定や現在の状況を表示することができ、例えば show dhcp server statistics といったコマンドを実行すれば、DHCPサーバのIPアドレス貸出数 (number of leased) が表示されます。 ちょうど監視項目として、vbash 経由で取得できる情報を使って、IPアドレス貸出数を zabbix 経由で取得したかったので、調べてみたのです。 まず show コマンドの実装がどうなっているのか調べてみたところ、こんな感じでした。 $ type show show is aliased to `_vyatta_op_run show' $ type _vyatta_op_run | head -5 _vyatta_op_run is a function _vyatta_op_run () { local -i estat; local tpath=$vyatta_op_templates; show コマンドはBashのマクロっぽいもので実装されていますね。 次に show dhcp server statistics がどうなっているのか調べるために、Bashの実行オプションを set -x と変更して、評価されるコマンドを表示して調べてみました。 vyatta@vyatta:~$ set -x + return 0 ++ history -a vyatta@vyatta:~$ show dhcp server statistics .... 中略 .... + eval shopt -s 'extglob;shopt' -u 'nullglob;' ++ shopt -s ex