見出し画像

TWSNMP FC:MIBブラウザー完成

今朝も5時前に猫に起こしてもらいました。昨日からJリーグが始まり、今日は浦和レッズの試合があります。楽しみです。
さて、昨日に続いてMIBブラウザーを作っています。対象ノードから取得したMIB情報を表示する部分の改善です。昨日作ったのは取得したMIBを順番にリスト表示する方法でした。

画像1

のような感じです。SNMPのMIBにはテーブル形式のものがあります。これをテーブル(表)で表示する部分を今朝作りました。
例えば、ifTableというMIB情報を取得して順番に表示すると

画像2

のような感じになります。どのLANポートの情報かわかりにくい表示になってしまいます。これを表に変換するために、

    showTable() {
     const names = []
     const indexes = []
     const rows = []
     this.mibs.forEach((e) => {
       const name = e.Name
       const val = e.Value
       const i = name.indexOf('.')
       if (i > 0) {
         const base = name.substring(0, i)
         const index = name.substring(i + 1)
         if (!names.includes(base)) {
           names.push(base)
         }
         if (!indexes.includes(index)) {
           indexes.push(index)
           rows.push([index])
         }
         const r = indexes.indexOf(index)
         if (r >= 0) {
           rows[r].push(val)
         }
       }
     })
     this.headers = [
       {
         text: 'Index',
         value: 'Index',
       },
     ]
     names.forEach((e) => {
       this.headers.push({
         text: e,
         value: e,
       })
     })
     this.items = []
     rows.forEach((e) => {
       const d = { Index: e[0] }
       for (let i = 1; i < e.length; i++) {
         d[names[i - 1]] = e[i]
       }
       this.items.push(d)
     })
   },

のような処理を通すと、

画像3

のような表示にできました。
こういうロジックを考えるのはパズルを解くようでかなり楽しめます。今朝は集中して作っていると猫が異常に騒いでいました。たぶん、寒いと言っているようです。さっき騒ぎながら、かみさんといっしょにリビングのストーブのほうに行ったようです。

Dockerの環境を作るために購入したminiPCが昨日届きました。
購入したのは、

です。Docker環境のためにWindows、Mac、VMwareの上のLinuxを使っていましたが、アップデートで再起動するなどネットワーク管理で使うには不都合なことが多いので、安いパソコンを探していて見つけました。テレワーク需要で小型のPCが沢山あるようです。
この機種を選んだのは、

・LANポートが2個ある
・メモリが8GB
・2.5インチのHDDが搭載可能

ということです。
このPCとDockerを使って安価にネットワーク管理する話を書きたいと思っています。その前にTWSNMP FCを完成させなければと思います。

今日の作業は、

明日に続く。


開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。