gosnmp

Форк
0
81 строка · 1.9 Кб
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
// This program demonstrates BulkWalk.
6
package main
7

8
import (
9
	"flag"
10
	"fmt"
11
	"log"
12
	"os"
13
	"path/filepath"
14
	"time"
15

16
	"github.com/gosnmp/gosnmp"
17
)
18

19
func main() {
20
	flag.Usage = func() {
21
		fmt.Printf("Usage:\n")
22
		fmt.Printf("   %s [-community=<community>] host [oid]\n", filepath.Base(os.Args[0]))
23
		fmt.Printf("     host      - the host to walk/scan\n")
24
		fmt.Printf("     oid       - the MIB/Oid defining a subtree of values\n\n")
25
		flag.PrintDefaults()
26
	}
27

28
	var community string
29
	flag.StringVar(&community, "community", "public", "the community string for device")
30

31
	flag.Parse()
32

33
	if len(flag.Args()) < 1 {
34
		flag.Usage()
35
		os.Exit(1)
36
	}
37
	target := flag.Args()[0]
38
	var oid string
39
	if len(flag.Args()) > 1 {
40
		oid = flag.Args()[1]
41
	}
42

43
	gosnmp.Default.Target = target
44
	gosnmp.Default.Transport = "tcp"
45
	gosnmp.Default.Community = community
46
	gosnmp.Default.Timeout = time.Duration(10 * time.Second) // Timeout better suited to walking
47
	gosnmp.Default.Logger = gosnmp.NewLogger(log.New(os.Stdout, "", 0))
48
	err := gosnmp.Default.Connect()
49
	if err != nil {
50
		fmt.Printf("Connect err: %v\n", err)
51
		os.Exit(1)
52
	}
53
	defer gosnmp.Default.Conn.Close()
54

55
	err = gosnmp.Default.BulkWalk(oid, printValue)
56
	if err != nil {
57
		fmt.Printf("Walk Error: %v\n", err)
58
		os.Exit(1)
59
	}
60

61
	// This may lead to the remote server closing the TCP connection
62
	time.Sleep(15 * time.Second)
63
	err = gosnmp.Default.BulkWalk(oid, printValue)
64
	if err != nil {
65
		fmt.Printf("Walk Error: %v\n", err)
66
		os.Exit(1)
67
	}
68
}
69

70
func printValue(pdu gosnmp.SnmpPDU) error {
71
	fmt.Printf("%s = ", pdu.Name)
72

73
	switch pdu.Type {
74
	case gosnmp.OctetString:
75
		b := pdu.Value.([]byte)
76
		fmt.Printf("STRING: %s\n", string(b))
77
	default:
78
		fmt.Printf("TYPE %d: %d\n", pdu.Type, gosnmp.ToBigInt(pdu.Value))
79
	}
80
	return nil
81
}
82

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

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

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

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