1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

bsnmpdでetherswitchのmibを拾う

1
Last updated at Posted at 2019-12-11

etherswitchのMIBをFreeBSDに標準で入るbsnmpdで拾えるようにしてみました。

スクリプトによる拡張はsnmp_ucd.soが必要で、snmpd.configには以下を追加しました。

snmpd.config
begemotSnmpdModulePath."ucd" = "/usr/local/lib/snmp_ucd.so"
%ucd
updateInterval = 500
extCheckInterval = 100
extUpdateInterval = 3000
extTimeout = 60

# Extension commands (extTable)

extNames.0 = "rtlswitch"
extCommand.0 = "/tmp/es.rb 0"

ターゲットはRTL8366SRで、mruby-etherswitch入りのmrubyでスクリプトは以下になります。

extCheckIntervalとextUpdateIntervalの関係はこの図のようになっています。

snmpext.png

extCheckIntervalでチェックしてextUpdateInterval間隔で実際のコマンドを実行しています。次のupdateまでwalkへの問い合わせはこの値を返します。

es.rb
#!/usr/local/bin/mruby

t = EtherSwitch.new(0)

port = ARGV[0].to_i

off = 0x1000 + port * 0x0040

t.writereg(off, 0)

v = t.readreg(0x11F0)
if v == 0 then
  lo = t.readreg(off)
  hi = t.readreg(off + 1)
  val = hi << 16 | lo
else
  val = 0
end
p val

walkしてみます。

% bsnmpwalk -s 10.0.1.3 .1.3.6.1.4.1.2021.8.1.101
1.3.6.1.4.1.2021.8.1.101.0 = 13929442

いつもの蟹さん仕様で、なにが拾えてるかは謎です。^ ^;

FreeBSDのetherswitchのRTL8366SRのサポートコードは私が作りました。

追記:

bsnmpwalkは-o quietを付けると値だけが出力されます。

snmp_mibII.soを利用するとinterfaceの情報が拾えるようになります。

bsnmpwalk -s 10.0.1.1 .1.3.6.1.2.1.2.2.1.16 | awk '{if(NR > 1){printf ","};printf $3}

この方法だと、PHYのMIBも拾おうとして、bsnmpdのエラーメッセージが複数でるようです。

Apr  4 10:51:00  snmpd[13473]: SIOCGIFDESCR (arswitch0port1): Device not configured

OIDを完全に指定して並べるのが良さそうです。

bsnmpwalk -s 10.0.1.1 .1.3.6.1.2.1.2.2.1.16.5 .1.3.6.1.2.1.2.2.1.16.6 .1.3.6.1.2.1.2.2.1.16.7 .1.3.6.1.2.1.2.2.1.16.8 | awk '{if(NR > 1){printf ","};printf $3}

これでもarswitch0port1のエラーメッセージだけは出てしまうようです。

しばらく動かしていたら数値がオーバーフローしてしまいました。なんらか対策が必要です。

bsnmpdは起動してないとtime outして、起動すぐだとデータが取れてなくて、空になるようです。

# bsnmpwalk -o quiet -s 10.0.1.24 .1.3.6.1.4.1.2021.8.1.101.0
bsnmpwalk: Snmp dialog: Operation timed out
# bsnmpwalk -o quiet -s 10.0.1.24 .1.3.6.1.4.1.2021.8.1.101.0

# bsnmpwalk -o quiet -s 10.0.1.24 .1.3.6.1.4.1.2021.8.1.101.0
0,1986,1768,4758,20039,8976

空の時には処理しないようにするのが良いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?