| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- package main
- import (
- "flag"
- "github.com/gosnmp/gosnmp"
- "log"
- "os"
- "time"
- )
- func main() {
- sendVersion := flag.Int("sv", 2, "Send trap version")
- flag.Parse()
- target := "47.92.151.165"
- var port uint16 = 9162
- switch *sendVersion {
- case 1:
- sendV1(target, port)
- case 3:
- sendV3(target, port)
- default:
- sendV2c(target, port)
- }
- }
- func sendV2c(target string, port uint16) {
- gosnmp.Default.Target = target
- gosnmp.Default.Port = port
- gosnmp.Default.Version = gosnmp.Version2c
- trap := gosnmp.SnmpTrap{
- Variables: getTestPdus(),
- }
- err := gosnmp.Default.Connect()
- if err != nil {
- log.Fatalf("Connect() err: %v", err)
- }
- defer gosnmp.Default.Conn.Close()
- _, err = gosnmp.Default.SendTrap(trap)
- if err != nil {
- log.Fatalf("SendTrap() err: %v", err)
- }
- }
- func sendV1(target string, port uint16) {
- gosnmp.Default.Target = target
- gosnmp.Default.Port = port
- gosnmp.Default.Version = gosnmp.Version1
- trap := gosnmp.SnmpTrap{
- Variables: getTestPdus(),
- Enterprise: ".1.3.6.1.6.3.1.1.5.1",
- AgentAddress: "127.0.0.1",
- GenericTrap: 0,
- SpecificTrap: 0,
- Timestamp: 300,
- }
- err := gosnmp.Default.Connect()
- if err != nil {
- log.Fatalf("Connect() err: %v", err)
- }
- defer gosnmp.Default.Conn.Close()
- _, err = gosnmp.Default.SendTrap(trap)
- if err != nil {
- log.Fatalf("SendTrap() err: %v", err)
- }
- }
- func sendV3(target string, port uint16) {
- // Default is a pointer to a GoSNMP struct that contains sensible defaults
- // eg port 161, community public, etc
- params := &gosnmp.GoSNMP{
- Target: target,
- Port: port,
- Version: gosnmp.Version3,
- Timeout: time.Duration(30) * time.Second,
- SecurityModel: gosnmp.UserSecurityModel,
- MsgFlags: gosnmp.AuthPriv,
- Logger: log.New(os.Stdout, "", 0),
- SecurityParameters: &gosnmp.UsmSecurityParameters{
- UserName: "user",
- AuthoritativeEngineID: "1234",
- AuthenticationProtocol: gosnmp.SHA,
- AuthenticationPassphrase: "password",
- PrivacyProtocol: gosnmp.DES,
- PrivacyPassphrase: "password",
- },
- }
- err := params.Connect()
- if err != nil {
- log.Fatalf("Connect() err: %v", err)
- }
- defer params.Conn.Close()
- trap := gosnmp.SnmpTrap{
- Variables: getTestPdus(),
- }
- _, err = params.SendTrap(trap)
- if err != nil {
- log.Fatalf("SendTrap() err: %v", err)
- }
- }
- func getTestPdus() []gosnmp.SnmpPDU {
- return []gosnmp.SnmpPDU{
- {
- Name: ".1.3.6.1.4.1.318.1.1.4.4.2.1.3.5",
- Type: gosnmp.Integer,
- Value: 100,
- },
- {
- Name: ".1.3.6.1.6.3.1.1.4.1.0",
- Type: gosnmp.ObjectIdentifier,
- Value: ".1.3.6.1.6.3.1.1.5.1",
- },
- {
- Name: "1.3.6.1.2.1.1.6",
- Type: gosnmp.OctetString,
- Value: "Oval Office",
- },
- {
- Name: "1.3.6.1.2.1.1.3.0",
- Type: gosnmp.TimeTicks,
- Value: uint32(time.Now().Unix()),
- },
- }
- }
|