Code Monkey home page Code Monkey logo

gosnmp's People

Contributors

abh avatar corny avatar davidnarayan avatar gmcintire avatar jamesandariese avatar jamesharr avatar jroes avatar kkirsche avatar luke-orden avatar mordyovits avatar soniah avatar tehnerd avatar thegrandpackard avatar wdreeveii avatar webconn avatar xiocode avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gosnmp's Issues

Results are being truncated

It appears that results are being truncated. Here are two different examples comparing snmpget with example.go.

snmpget -c public 192.168.1.181 .1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0 = STRING: Linux ubuntu 3.2.0-23-virtual #36-Ubuntu SMP Tue Apr 10 22:29:03 UTC 2012 x86_64

./example -target="192.168.1.181" -oid=".1.3.6.1.2.1.1.1.0"
Getting .1.3.6.1.2.1.1.1.0
2012/09/30 00:05:06 [DEBUG] packet.go:74 (github.com/alouca/gosnmp.Unmarshal) Packet sanity verified, we got all the bytes (120)
2012/09/30 00:05:06 [DEBUG] packet.go:94 (github.com/alouca/gosnmp.Unmarshal) Parsed community public
2012/09/30 00:05:06 [DEBUG] packet.go:97 (github.com/alouca/gosnmp.Unmarshal) SNMP Packet is get response
2012/09/30 00:05:06 [DEBUG] packet.go:108 (github.com/alouca/gosnmp.Unmarshal) Response length: 120
2012/09/30 00:05:06 [DEBUG] packet.go:146 (github.com/alouca/gosnmp.Unmarshal) Request ID: 0 Error: 0 Error Index: 0
2012/09/30 00:05:06 [DEBUG] packet.go:154 (github.com/alouca/gosnmp.Unmarshal) Parsing var bind response (Cursor at 26/120)
2012/09/30 00:05:06 [DEBUG] packet.go:165 (github.com/alouca/gosnmp.Unmarshal) OID ([1 3 6 1 2 1 1 1 0]) Field was 10 bytes
2012/09/30 00:05:06 [DEBUG] packet.go:178 (github.com/alouca/gosnmp.Unmarshal) PDU Value length: 80
.1.3.6.1.2.1.1.1.0 -> Linux ubuntu 3.2.0-23-virtual #36-Ubuntu SMP Tue Apr 10 22:29:03 UTC 2012 x86_

snmpget -c public -v 2c 192.168.1.181 .1.3.6.1.4.1.2021.10.1.3.1
UCD-SNMP-MIB::laLoad.1 = STRING: 0.00

./example -target="192.168.1.181" -oid=".1.3.6.1.4.1.2021.10.1.3.1"
Getting .1.3.6.1.4.1.2021.10.1.3.1
2012/09/30 00:26:16 [DEBUG] packet.go:74 (github.com/alouca/gosnmp.Unmarshal) Packet sanity verified, we got all the bytes (47)
2012/09/30 00:26:16 [DEBUG] packet.go:94 (github.com/alouca/gosnmp.Unmarshal) Parsed community public
2012/09/30 00:26:16 [DEBUG] packet.go:97 (github.com/alouca/gosnmp.Unmarshal) SNMP Packet is get response
2012/09/30 00:26:16 [DEBUG] packet.go:108 (github.com/alouca/gosnmp.Unmarshal) Response length: 47
2012/09/30 00:26:16 [DEBUG] packet.go:146 (github.com/alouca/gosnmp.Unmarshal) Request ID: 0 Error: 0 Error Index: 0
2012/09/30 00:26:16 [DEBUG] packet.go:154 (github.com/alouca/gosnmp.Unmarshal) Parsing var bind response (Cursor at 26/47)
2012/09/30 00:26:16 [DEBUG] packet.go:165 (github.com/alouca/gosnmp.Unmarshal) OID ([1 3 6 1 4 1 2021 10 1 3 1]) Field was 13 bytes
2012/09/30 00:26:16 [DEBUG] packet.go:178 (github.com/alouca/gosnmp.Unmarshal) PDU Value length: 4
.1.3.6.1.4.1.2021.10.1.3.1 -> 0.

invalid memory address or nil pointer dereference

Hello,

when I'm scanning thousands of ip addresses using your library for an internal discovery tool I receive a panic. I am using your library in a go function with 128 concurrent instances of it, maybe that is the problem? The panic occurs on this line "for _,v := range response1.Variables"

Do you eventually have a workaround?

Thx in advance,

Dirk

Ip: 10.3.122.51
Ip: 10.48.79.206
2016/08/30 15:32:30 [DEBUG] packet.go:51 (github.com/alouca/gosnmp.Unmarshal) Begin SNMP Packet unmarshal
2016/08/30 15:32:30 [DEBUG] packet.go:69 (github.com/alouca/gosnmp.Unmarshal) Packet sanity verified, we got all the bytes (49)
2016/08/30 15:32:30 [DEBUG] packet.go:84 (github.com/alouca/gosnmp.Unmarshal) Parsed Version 1
2016/08/30 15:32:30 [DEBUG] packet.go:95 (github.com/alouca/gosnmp.Unmarshal) Parsed community public
2016/08/30 15:32:30 [DEBUG] packet.go:108 (github.com/alouca/gosnmp.Unmarshal) SNMP Packet is GetResponse
2016/08/30 15:32:30 [DEBUG] packet.go:109 (github.com/alouca/gosnmp.Unmarshal) PDU Size is 36
2016/08/30 15:32:30 [DEBUG] packet.go:125 (github.com/alouca/gosnmp.Unmarshal) Parsed Request ID: 0
2016/08/30 15:32:30 [DEBUG] packet.go:150 (github.com/alouca/gosnmp.Unmarshal) Request ID: 0 Error: 0 Error Index: 0
2016/08/30 15:32:30 [DEBUG] packet.go:161 (github.com/alouca/gosnmp.Unmarshal) Parsing var bind response (Cursor at 26/51)
2016/08/30 15:32:30 [DEBUG] packet.go:170 (github.com/alouca/gosnmp.Unmarshal) Varbind length: 2/23
2016/08/30 15:32:30 [DEBUG] packet.go:172 (github.com/alouca/gosnmp.Unmarshal) Parsing OID (Cursor at 28)
2016/08/30 15:32:30 [DEBUG] packet.go:182 (github.com/alouca/gosnmp.Unmarshal) OID (&{ObjectIdentifier 2 8 [43 6 1 2 1 1 5 0] 0xc821d54f40}) Field was 8 bytes
2016/08/30 15:32:30 [DEBUG] packet.go:191 (github.com/alouca/gosnmp.Unmarshal) Value field was 11 bytes
2016/08/30 15:32:30 [DEBUG] packet.go:193 (github.com/alouca/gosnmp.Unmarshal) Varbind decoding success
2016/08/30 15:32:30 [DEBUG] packet.go:51 (github.com/alouca/gosnmp.Unmarshal) Begin SNMP Packet unmarshal
2016/08/30 15:32:30 [DEBUG] packet.go:69 (github.com/alouca/gosnmp.Unmarshal) Packet sanity verified, we got all the bytes (40)
2016/08/30 15:32:30 [DEBUG] packet.go:84 (github.com/alouca/gosnmp.Unmarshal) Parsed Version 1
2016/08/30 15:32:30 [DEBUG] packet.go:95 (github.com/alouca/gosnmp.Unmarshal) Parsed community SiAmFa�#
2016/08/30 15:32:30 [DEBUG] packet.go:105 (github.com/alouca/gosnmp.Unmarshal) Unsupported SNMP Packet Type Integer
2016/08/30 15:32:30 [DEBUG] packet.go:202 (github.com/alouca/gosnmp.Unmarshal) PDU Size is 4
Ip: 10.48.78.92
2016/08/30 15:32:30 [DEBUG] packet.go:51 (github.com/alouca/gosnmp.Unmarshal) Begin SNMP Packet unmarshal
2016/08/30 15:32:30 [DEBUG] packet.go:69 (github.com/alouca/gosnmp.Unmarshal) Packet sanity verified, we got all the bytes (73)
2016/08/30 15:32:30 [DEBUG] packet.go:84 (github.com/alouca/gosnmp.Unmarshal) Parsed Version 1
2016/08/30 15:32:30 [DEBUG] packet.go:95 (github.com/alouca/gosnmp.Unmarshal) Parsed community public
2016/08/30 15:32:30 [DEBUG] packet.go:108 (github.com/alouca/gosnmp.Unmarshal) SNMP Packet is GetResponse
2016/08/30 15:32:30 [DEBUG] packet.go:109 (github.com/alouca/gosnmp.Unmarshal) PDU Size is 60
2016/08/30 15:32:30 [DEBUG] packet.go:125 (github.com/alouca/gosnmp.Unmarshal) Parsed Request ID: 0
2016/08/30 15:32:30 [DEBUG] packet.go:150 (github.com/alouca/gosnmp.Unmarshal) Request ID: 0 Error: 0 Error Index: 0
2016/08/30 15:32:30 [DEBUG] packet.go:161 (github.com/alouca/gosnmp.Unmarshal) Parsing var bind response (Cursor at 26/75)
2016/08/30 15:32:30 [DEBUG] packet.go:170 (github.com/alouca/gosnmp.Unmarshal) Varbind length: 2/47
2016/08/30 15:32:30 [DEBUG] packet.go:172 (github.com/alouca/gosnmp.Unmarshal) Parsing OID (Cursor at 28)
2016/08/30 15:32:30 [DEBUG] packet.go:182 (github.com/alouca/gosnmp.Unmarshal) OID (&{ObjectIdentifier 2 8 [43 6 1 2 1 1 1 0] 0xc821d55d00}) Field was 8 bytes
2016/08/30 15:32:30 [DEBUG] packet.go:191 (github.com/alouca/gosnmp.Unmarshal) Value field was 35 bytes
2016/08/30 15:32:30 [DEBUG] packet.go:193 (github.com/alouca/gosnmp.Unmarshal) Varbind decoding success
map[ip:10.3.122.51 sysName:PRODSESCARA sysDescr:Avaya SIP Enablement Services (SES) community:public]
********************************************************_184
Ip: 10.49.134.110
Ip: 10.48.18.123
Ip: 10.49.110.149
Ip: 10.48.79.206
Ip: 10.47.12.166
2016/08/30 15:32:30 [DEBUG] packet.go:51 (github.com/alouca/gosnmp.Unmarshal) Begin SNMP Packet unmarshal
2016/08/30 15:32:30 [DEBUG] packet.go:69 (github.com/alouca/gosnmp.Unmarshal) Packet sanity verified, we got all the bytes (40)
2016/08/30 15:32:30 [DEBUG] packet.go:84 (github.com/alouca/gosnmp.Unmarshal) Parsed Version 1
2016/08/30 15:32:30 [DEBUG] packet.go:95 (github.com/alouca/gosnmp.Unmarshal) Parsed community SiAmFaO�
2016/08/30 15:32:30 [DEBUG] packet.go:233 (github.com/alouca/gosnmp.parseField) Field length is padded to 108 bytes
2016/08/30 15:32:30 [DEBUG] packet.go:234 (github.com/alouca/gosnmp.parseField) Decoded final length: 145244228500324865
2016/08/30 15:32:30 [DEBUG] packet.go:98 (github.com/alouca/gosnmp.Unmarshal) Unable to parse _SNMP PDU: Unable to parse BER: provided data length is longer than actual data (145244228500324865 vs 27)

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x47ba38]

goroutine 907 [running]:
panic(0x683300, 0xc82000a0e0)
/usr/local/go/src/runtime/panic.go:464 +0x3e6
github.com/dirk/ref.GetSNMP(0xc8200c2060, 0xc8200c20c0, 0x36b)
/home/id829625/work/src/github.com/dirk/ref/ref.go:358 +0xd88
created by github.com/dirk/ref.SNMPDiscover
/home/id829625/work/src/github.com/dirk/ref/ref.go:304 +0x508
id829625@bbeb0dae6899:~/work/src/github.com/dirk/discovery$

Unexpected results

I'm not quite sure what's going on here but I get wildly different results when running example.go versus snmpget. Below are a couple of examples. For what it's worth these OIDs were working with an older release of the code.

uptime

snmpget -c public -v 2c 192.168.1.181 .1.3.6.1.2.1.1.3.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1131111) 3:08:31.11

./example -target="192.168.1.181" -oid=".1.3.6.1.2.1.1.3.0"
Getting .1.3.6.1.2.1.1.3.0
2012/09/30 00:27:54 [DEBUG] packet.go:74 (github.com/alouca/gosnmp.Unmarshal) Packet sanity verified, we got all the bytes (43)
2012/09/30 00:27:54 [DEBUG] packet.go:94 (github.com/alouca/gosnmp.Unmarshal) Parsed community public
2012/09/30 00:27:54 [DEBUG] packet.go:97 (github.com/alouca/gosnmp.Unmarshal) SNMP Packet is get response
2012/09/30 00:27:54 [DEBUG] packet.go:108 (github.com/alouca/gosnmp.Unmarshal) Response length: 43
2012/09/30 00:27:54 [DEBUG] packet.go:146 (github.com/alouca/gosnmp.Unmarshal) Request ID: 0 Error: 0 Error Index: 0
2012/09/30 00:27:54 [DEBUG] packet.go:154 (github.com/alouca/gosnmp.Unmarshal) Parsing var bind response (Cursor at 26/43)
2012/09/30 00:27:54 [DEBUG] packet.go:165 (github.com/alouca/gosnmp.Unmarshal) OID ([1 3 6 1 2 1 1 3 0]) Field was 10 bytes
2012/09/30 00:27:54 [DEBUG] packet.go:178 (github.com/alouca/gosnmp.Unmarshal) PDU Value length: 3
.1.3.6.1.2.1.1.3.0 -> Type: 67 - Value: 17

RAM Free

snmpget -c public -v 2c 192.168.1.181 .1.3.6.1.4.1.2021.4.6.0
UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 121116 kB

./example -target="192.168.1.181" -oid=".1.3.6.1.4.1.2021.4.6.0"
Getting .1.3.6.1.4.1.2021.4.6.0
2012/09/30 00:33:09 [DEBUG] packet.go:74 (github.com/alouca/gosnmp.Unmarshal) Packet sanity verified, we got all the bytes (45)
2012/09/30 00:33:09 [DEBUG] packet.go:94 (github.com/alouca/gosnmp.Unmarshal) Parsed community public
2012/09/30 00:33:09 [DEBUG] packet.go:97 (github.com/alouca/gosnmp.Unmarshal) SNMP Packet is get response
2012/09/30 00:33:09 [DEBUG] packet.go:108 (github.com/alouca/gosnmp.Unmarshal) Response length: 45
2012/09/30 00:33:09 [DEBUG] packet.go:146 (github.com/alouca/gosnmp.Unmarshal) Request ID: 0 Error: 0 Error Index: 0
2012/09/30 00:33:09 [DEBUG] packet.go:154 (github.com/alouca/gosnmp.Unmarshal) Parsing var bind response (Cursor at 26/45)
2012/09/30 00:33:09 [DEBUG] packet.go:165 (github.com/alouca/gosnmp.Unmarshal) OID ([1 3 6 1 4 1 2021 4 6 0]) Field was 12 bytes
2012/09/30 00:33:09 [DEBUG] packet.go:178 (github.com/alouca/gosnmp.Unmarshal) PDU Value length: 3
.1.3.6.1.4.1.2021.4.6.0 -> Type: 2 - Value: 1

h3c many response at once request

we test some switch machines, and often get "Request ID mismatch" tips. So,i check the packages with wireshark, and find many the same response packages.
image
I try to fix the bug, in func (x *GoSNMP) sendPacket(packet *SnmpPacket) (*SnmpPacket, error) {...}
i use for {...} replace to once Read. It works well ! (ps: Ignore my poor English)

Unable to decode packet: Unable to decode value: No such instance

mycode demo

s, err := gosnmp.NewGoSNMP(ip, "public", gosnmp.Version2c, 5)
	if err != nil {
		return nil, fmt.Errorf("new snmp client error: %v", err)
	}
	klog.V(4).Infof("new snmp client success,ip: %s", ip)
	s.SetDebug(true)
	s.SetVerbose(true)
	resp, err := s.Get(".1.3.6.1.2.1.31.1.1.1.1")
	if err != nil {
		return nil, fmt.Errorf("get Names error: %v", err)
	}

got error:

failed to collect switch info, due to : get NameOID error: Unable to decode packet: Unable to decode value: No such instance

what can i do?

Timeout error when GetMulti has too many OIDs

I'm running into a timeout error when trying to make a GetMulti request with six OIDs. The error is "Error reading from UDP: WSARecv udp 172.16.1.2:50964: i/o timeout".

When I watch for the SNMP packet with Wireshark the packets that time out are sent but Wireshark can't decode them as valid SNMP packets. My suspicion is that the packet is too big and is truncated.

The error occurs when the length of the byte array return from SnmpPacket.marshal() is 140. It does not occur when the length is 123. That's as far as I've been able to narrow down the problem.

Allow ports other than 161

Currently NewGoSNMP uses 161 as a hard coded port. Allowing the caller to specify the port of the target would provide more flexibility.

Counter32 return nil value

file: decode.go
66 case Counter32:
67 ret, err := parseInt(data)

replace parseInt with parseInt64, cat get value.

Unable to get get-response with gosnmp.Version1

I'm unable to get get-response with gosnmp.Version1 and gosnmp but I'm able to get it using snmpget.

I get:
panic: Error reading from UDP: WSARecv udp <ip>:56671: i/o timeout

Here's the output of wireshark :

(not working)

s, err := gosnmp.NewGoSNMP(host, "private", gosnmp.Version1, 5)
resp, err := s.Get(".1.3.6.1.4.1.318.1.1.10.3.13.1.1.3.1")
00000000  30 2f 02 01 01 04 07 70  72 69 76 61 74 65 a0 21 0/.....p rivate.!
00000010  02 01 00 02 01 00 02 01  00 30 16 30 14 06 10 2b ........ .0.0...+
00000020  06 01 04 01 82 3e 01 01  0a 03 0d 01 01 03 01 05 .....>.. ........
00000030  00

(working) snmpget -v1 -cprivate ip .1.3.6.1.4.1.318.1.1.10.3.13.1.1.3.1

00000000  30 32 02 01 00 04 07 70  72 69 76 61 74 65 a0 24 02.....p rivate.$
00000010  02 04 59 80 62 82 02 01  00 02 01 00 30 16 30 14 ..Y.b... ....0.0.
00000020  06 10 2b 06 01 04 01 82  3e 01 01 0a 03 0d 01 01 ..+..... >.......
00000030  03 01 05 00

No response for requests >= 128 bytes

If you send a snmp request which is larger than 127 bytes, then the packet is malformed and you do not get a response.

Here is a request where the data has length 128 bytes:

Frame 4: 172 bytes on wire (1376 bits), 172 bytes captured (1376 bits) on interface 0
Ethernet II, Src: Vmware_c0:00:01 (00:50:56:c0:00:01), Dst: Vmware_cb:42:6a (00:0c:29:cb:42:6a)
Internet Protocol Version 4, Src: 192.168.140.1, Dst: 192.168.140.252
User Datagram Protocol, Src Port: 46844 (46844), Dst Port: 161 (161)
[Malformed Packet: SNMP]
    [Expert Info (Error/Malformed): Malformed Packet (Exception occurred)]
        [Malformed Packet (Exception occurred)]
        [Severity level: Error]
        [Group: Malformed]

This has the length field set to 80, which is binary 1000000, for snmp this value means that long form length encoding is being used, and the 7 least significant bits should represent the subsequent bytes that will be used to represent the length.

The code currently represents the size of the data as a uint8 and sets the length to this value.

To recreate:

package main

import (
    "fmt"
    "log"

    "github.com/alouca/gosnmp"
)

func main() {
    s, err := gosnmp.NewGoSNMP("vmx01", "test123", gosnmp.Version2c, 5)
    if err != nil {
        log.Print(err)
        return
    }   
    resp, err := s.Get(".1.3.6.1.4.1.2636.3.5.2.11.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1")
    if err != nil {
        log.Print(err)
        return
    }   
    for _, v := range resp.Variables {
        fmt.Println(v.Name, v.Value)
    }   
}
$ go run snmp.go 
2017/06/05 14:57:46 Error reading from UDP: read udp 192.168.140.1:46844->192.168.141.252:161: i/o timeout

You will not get a response due to the packet being malformed. If you capture the traffic via wireshark you will be able to see the malformed packet.

gosnmp_test.go:55: Running walk test panic: runtime error: invalid memory address or nil pointer dereference

go version go1.2.1 linux/386

go test
2014/03/20 10:14:38 [DEBUG] packet.go:51 (_/home/bbigras/test/gosnmp.Unmarshal) Begin SNMP Packet unmarshal
2014/03/20 10:14:38 [DEBUG] packet.go:233 (_/home/bbigras/test/gosnmp.parseField) Field length is padded to 2 bytes
2014/03/20 10:14:38 [DEBUG] packet.go:234 (_/home/bbigras/test/gosnmp.parseField) Decoded final length: 50
2014/03/20 10:14:38 [DEBUG] packet.go:69 (_/home/bbigras/test/gosnmp.Unmarshal) Packet sanity verified, we got all the bytes (50)
2014/03/20 10:14:38 [DEBUG] packet.go:84 (_/home/bbigras/test/gosnmp.Unmarshal) Parsed Version 1
2014/03/20 10:14:38 [DEBUG] packet.go:95 (_/home/bbigras/test/gosnmp.Unmarshal) Parsed community public
2014/03/20 10:14:38 [DEBUG] packet.go:233 (_/home/bbigras/test/gosnmp.parseField) Field length is padded to 2 bytes
2014/03/20 10:14:38 [DEBUG] packet.go:234 (_/home/bbigras/test/gosnmp.parseField) Decoded final length: 35
2014/03/20 10:14:38 [DEBUG] packet.go:108 (_/home/bbigras/test/gosnmp.Unmarshal) SNMP Packet is GetResponse
2014/03/20 10:14:38 [DEBUG] packet.go:109 (_/home/bbigras/test/gosnmp.Unmarshal) PDU Size is 35
2014/03/20 10:14:38 [DEBUG] packet.go:125 (_/home/bbigras/test/gosnmp.Unmarshal) Parsed Request ID: 0
2014/03/20 10:14:38 [DEBUG] packet.go:149 (_/home/bbigras/test/gosnmp.Unmarshal) Request ID: 0 Error: 0 Error Index: 0
2014/03/20 10:14:38 [DEBUG] packet.go:233 (_/home/bbigras/test/gosnmp.parseField) Field length is padded to 2 bytes
2014/03/20 10:14:38 [DEBUG] packet.go:234 (_/home/bbigras/test/gosnmp.parseField) Decoded final length: 22
2014/03/20 10:14:38 [DEBUG] packet.go:159 (_/home/bbigras/test/gosnmp.Unmarshal) Parsing var bind response (Cursor at 32/54)
2014/03/20 10:14:38 [DEBUG] packet.go:233 (_/home/bbigras/test/gosnmp.parseField) Field length is padded to 2 bytes
2014/03/20 10:14:38 [DEBUG] packet.go:234 (_/home/bbigras/test/gosnmp.parseField) Decoded final length: 18
2014/03/20 10:14:38 [DEBUG] packet.go:170 (_/home/bbigras/test/gosnmp.Unmarshal) Varbind length: 4/18
2014/03/20 10:14:38 [DEBUG] packet.go:170 (_/home/bbigras/test/gosnmp.Unmarshal) Parsing OID (Cursor at 36)
2014/03/20 10:14:38 [DEBUG] packet.go:180 (_/home/bbigras/test/gosnmp.Unmarshal) OID (&{ObjectIdentifier 2 10 [43 6 1 2 1 2 2 1 10 2] 0x1862d920}) Field was 10 bytes
2014/03/20 10:14:38 [DEBUG] packet.go:191 (_/home/bbigras/test/gosnmp.Unmarshal) Value field was 4 bytes
2014/03/20 10:14:38 [DEBUG] packet.go:193 (_/home/bbigras/test/gosnmp.Unmarshal) Varbind decoding success
.1.3.6.1.2.1.2.2.1.10.2 -> 162791045
--- FAIL: TestWalk (0.53 seconds)
        gosnmp_test.go:55: Running walk test
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
        panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x1 pc=0x808025c]

goroutine 5 [running]:
runtime.panic(0x81566c0, 0x82c37e8)
        /usr/local/go/src/pkg/runtime/panic.c:266 +0xac
testing.func·005()
        /usr/local/go/src/pkg/testing/testing.go:385 +0xda
runtime.panic(0x81566c0, 0x82c37e8)
        /usr/local/go/src/pkg/runtime/panic.c:248 +0xef
_/home/bbigras/test/gosnmp.TestWalk(0x18646e40)
        /home/bbigras/test/gosnmp/gosnmp_test.go:57 +0xec
testing.tRunner(0x18646e40, 0x82c1c4c)
        /usr/local/go/src/pkg/testing/testing.go:391 +0x88
created by testing.RunTests
        /usr/local/go/src/pkg/testing/testing.go:471 +0x6d3

goroutine 1 [chan receive]:
testing.RunTests(0x81a7c4c, 0x82c1c40, 0x4, 0x4, 0x1)
        /usr/local/go/src/pkg/testing/testing.go:472 +0x6ee
testing.Main(0x81a7c4c, 0x82c1c40, 0x4, 0x4, 0x82c0118, ...)
        /usr/local/go/src/pkg/testing/testing.go:403 +0x6b
main.main()
        _/home/bbigras/test/gosnmp/_test/_testmain.go:55 +0x83

goroutine 7 [syscall]:
runtime.goexit()
        /usr/local/go/src/pkg/runtime/proc.c:1394
exit status 2
FAIL    _/home/bbigras/test/gosnmp        0.597s

trap support

It would be really nice if gosnmp provides and trap support.

Can't decode OctetString

I am trying to get the Hostname of a SNMP device. I am polling the unified OID ".1.3.6.1.2.1.1.5.0" which returns a type of OctetString.
When i execute

fmt.Println(v.Type)
fmt.Println(v.Value)

I get the output

OctetString
[99 112 101 52 50 57 50 53 49 46 113 115 99 46 100 101]

And i can't figure out how to convert the []uint8 to a String.
When trying to execute string(v.Value) i get

cannot convert v.Value (type interface {}) to type string: need type assertion

And when i try to execute v.Value.(string) i get

panic: interface conversion: interface is []uint8, not string

goroutine 1 [running]:
main.interfacecheck(0x7fffef54641d, 0xc)
/home/simonszu/hello.go:19 +0x2e0
main.main()
/home/simonszu/hello.go:41 +0x174

Please help.

No method of closing the port?

func (x *GoSNMP) Close() error {
return x.conn.Close()
}

snmp, err := gosnmp.NewGoSNMP(ip, community, gosnmp.Version2c, timeout)
if err != nil {
return err
}
defer snmp.Close()

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.