gosnmp

Форк
0
56 строк · 1.1 Кб
1
// Copyright 2012 The GoSNMP Authors. All rights reserved.  Use of this
2
// source code is governed by a BSD-style license that can be found in the
3
// LICENSE file.
4

5
/*
6
The developer of the trapserver code (https://github.com/jda) says "I'm working
7
on the best level of abstraction but I'm able to receive traps from a Cisco
8
switch and Net-SNMP".
9

10
Pull requests welcome.
11
*/
12

13
package main
14

15
import (
16
	"flag"
17
	"fmt"
18
	"log"
19
	"net"
20
	"os"
21
	"path/filepath"
22

23
	g "github.com/gosnmp/gosnmp"
24
)
25

26
func main() {
27
	flag.Usage = func() {
28
		fmt.Printf("Usage:\n")
29
		fmt.Printf("   %s\n", filepath.Base(os.Args[0]))
30
		flag.PrintDefaults()
31
	}
32

33
	tl := g.NewTrapListener()
34
	tl.OnNewTrap = myTrapHandler
35
	tl.Params = g.Default
36
	tl.Params.Logger = g.NewLogger(log.New(os.Stdout, "", 0))
37

38
	err := tl.Listen("0.0.0.0:9162")
39
	if err != nil {
40
		log.Panicf("error in listen: %s", err)
41
	}
42
}
43

44
func myTrapHandler(packet *g.SnmpPacket, addr *net.UDPAddr) {
45
	log.Printf("got trapdata from %s\n", addr.IP)
46
	for _, v := range packet.Variables {
47
		switch v.Type {
48
		case g.OctetString:
49
			b := v.Value.([]byte)
50
			fmt.Printf("OID: %s, string: %x\n", v.Name, b)
51

52
		default:
53
			log.Printf("trap: %+v\n", v)
54
		}
55
	}
56
}
57

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.