89 lines
2.3 KiB
Go
89 lines
2.3 KiB
Go
package snmp
|
|
|
|
import "github.com/gosnmp/gosnmp"
|
|
|
|
type testSNMPConnection struct {
|
|
host string
|
|
values map[string]interface{}
|
|
}
|
|
|
|
func (tsc *testSNMPConnection) Host() string {
|
|
return tsc.host
|
|
}
|
|
|
|
func (tsc *testSNMPConnection) Get(oids []string) (*gosnmp.SnmpPacket, error) {
|
|
sp := &gosnmp.SnmpPacket{}
|
|
for _, oid := range oids {
|
|
v, ok := tsc.values[oid]
|
|
if !ok {
|
|
sp.Variables = append(sp.Variables, gosnmp.SnmpPDU{
|
|
Name: oid,
|
|
Type: gosnmp.NoSuchObject,
|
|
})
|
|
continue
|
|
}
|
|
sp.Variables = append(sp.Variables, gosnmp.SnmpPDU{
|
|
Name: oid,
|
|
Value: v,
|
|
})
|
|
}
|
|
return sp, nil
|
|
}
|
|
func (tsc *testSNMPConnection) Walk(oid string, wf gosnmp.WalkFunc) error {
|
|
for void, v := range tsc.values {
|
|
if void == oid || (len(void) > len(oid) && void[:len(oid)+1] == oid+".") {
|
|
if err := wf(gosnmp.SnmpPDU{
|
|
Name: void,
|
|
Value: v,
|
|
}); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
func (*testSNMPConnection) Reconnect() error {
|
|
return nil
|
|
}
|
|
|
|
var tsc = &testSNMPConnection{
|
|
host: "tsc",
|
|
values: map[string]interface{}{
|
|
".1.0.0.0.1.1.0": "foo",
|
|
".1.0.0.0.1.1.1": []byte("bar"),
|
|
".1.0.0.0.1.1.2": []byte(""),
|
|
".1.0.0.0.1.102": "bad",
|
|
".1.0.0.0.1.2.0": 1,
|
|
".1.0.0.0.1.2.1": 2,
|
|
".1.0.0.0.1.2.2": 0,
|
|
".1.0.0.0.1.3.0": "0.123",
|
|
".1.0.0.0.1.3.1": "0.456",
|
|
".1.0.0.0.1.3.2": "0.000",
|
|
".1.0.0.0.1.3.3": "9.999",
|
|
".1.0.0.0.1.5.0": 123456,
|
|
".1.0.0.0.1.6.0": ".1.0.0.0.1.7",
|
|
".1.0.0.1.1": "baz",
|
|
".1.0.0.1.2": 234,
|
|
".1.0.0.1.3": []byte("byte slice"),
|
|
".1.0.0.2.1.5.0.9.9": 11,
|
|
".1.0.0.2.1.5.1.9.9": 22,
|
|
".1.0.0.3.1.1.10": "instance",
|
|
".1.0.0.3.1.1.11": "instance2",
|
|
".1.0.0.3.1.1.12": "instance3",
|
|
".1.0.0.3.1.2.10": 10,
|
|
".1.0.0.3.1.2.11": 20,
|
|
".1.0.0.3.1.2.12": 20,
|
|
".1.0.0.3.1.3.10": 1,
|
|
".1.0.0.3.1.3.11": 2,
|
|
".1.0.0.3.1.3.12": 3,
|
|
".1.3.6.1.2.1.3.1.1.1.0": "foo",
|
|
".1.3.6.1.2.1.3.1.1.1.1": []byte("bar"),
|
|
".1.3.6.1.2.1.3.1.1.1.2": []byte(""),
|
|
".1.3.6.1.2.1.3.1.1.102": "bad",
|
|
".1.3.6.1.2.1.3.1.1.2.0": 1,
|
|
".1.3.6.1.2.1.3.1.1.2.1": 2,
|
|
".1.3.6.1.2.1.3.1.1.2.2": 0,
|
|
".1.3.6.1.2.1.3.1.1.3.0": "1.3.6.1.2.1.3.1.1.3",
|
|
".1.3.6.1.2.1.3.1.1.5.0": 123456,
|
|
},
|
|
}
|