TWSNMP FCフィードバック回答:SNMP TRAPの文字化け その4
浦和レッズ 引き分け!
昨日もフィードバックの返信を頂きました。ありがとうございます。
一部省略していますが、
に書いたDateAndTimeと同じフォーマットのようです。
先にテストプログラムを改造して、DateAndTimeのMIB値を含むTRAPを送ってみました。送っていただいたログと同じように文字化けしました。
DateAndTimeを表示できるように改造すると
表示できるようになりました。
DateAndTimeの仕様を良く読むと8バイトの時と11バイトの時がある事に気づきました。念の為DISPLAY-HINTに従って表示する処理を真面目に対応しました。
// DISPLAY-HINT "2d-1d-1d,1d:1d:1d.1d,1a1d:1d"
func getDateAndTime(i interface{}) string {
switch v := i.(type) {
case string:
return v
case []uint8:
if len(v) == 11 {
return fmt.Sprintf("%04d/%02d/%02d %02d:%02d:%02d.%02d%c%02d%02d",
(int(v[0])*256 + int(v[1])), v[2], v[3], v[4], v[5], v[6], v[7], v[8], v[9], v[10])
} else if len(v) == 8 {
return fmt.Sprintf("%04d/%02d/%02d %02d:%02d:%02d.%02d",
(int(v[0])*256 + int(v[1])), v[2], v[3], v[4], v[5], v[6], v[7])
}
case int, int64, uint, uint64:
return fmt.Sprintf("%d", v)
}
return fmt.Sprintf("Invalid Date And Time %v", i)
}
これで、受信したTRAPの含まれるMIB値が DateAndTime型と認識されれば、文字化けしないと思います。
DateAndTime型と認識されなくても16進数で表示されるはずです。
明日に続く
いいなと思ったら応援しよう!
開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。
ソフトウェアのマニュアルをnoteの記事で提供しています。
サポートによりnoteの運営にも貢献できるのでよろしくお願います。