From 6ada81d36d2cb1ebe2dc32940ccb80c944dd8343 Mon Sep 17 00:00:00 2001 From: simonzhangsz Date: Thu, 12 Sep 2024 11:17:22 +0800 Subject: [PATCH] fix: snmpv3 and ipv6 for sshsvc --- config/etc/default/sshsvc.yaml | 33 ++++++++++++++++++++++++++------- sshsvc/config/config.go | 2 ++ sshsvc/etc/sshsvc.yaml | 9 ++++++--- sshsvc/snmp/snmp.go | 18 ++++++++++++------ sshsvc/sshsvc.go | 2 ++ 5 files changed, 48 insertions(+), 16 deletions(-) diff --git a/config/etc/default/sshsvc.yaml b/config/etc/default/sshsvc.yaml index 70c0d944..ef317e8c 100644 --- a/config/etc/default/sshsvc.yaml +++ b/config/etc/default/sshsvc.yaml @@ -32,7 +32,7 @@ sshd: userName: manager password: pass123 authType: local - omcUrl: + tagNE: hlr # authType: local/omc telnetServer: @@ -45,15 +45,34 @@ telnetServer: userName: manager password: pass123 authType: local - omcUrl: + tagNE: hlr +# authproto: NoAuth/MD5/SHA +# privProto: NoPriv/DES/AES/AES192/AES256 +snmpServer: + listenAddr: '[::]' + listenPort: 34957 + userName: manager + authPass: pass123 + authproto: MD5 + privPass: "3F2A1B4C5D6E7F8A9B0C1D2E3F4A5B6C7D8E9F0A1B2C3D4E" + privProto: DES + + engineID: "8000000004323030313a6462383a3a39313636" + trapPort: 34958 + trapListen: true + trapBool: true + trapTick: 60 + timeOut: 5 + trapTarget: "2001:db8::9219" + database: type: mysql - user: root - password: 1000omc@kp! - host: 127.0.0.1 - port: 33066 - name: omc_db + user: administrator + password: "*86#ROtartsinim" + host: 192.168.13.117 + port: 3306 + name: OMC_PUB connParam: charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=True&interpolateParams=True omc: diff --git a/sshsvc/config/config.go b/sshsvc/config/config.go index 11c3da76..591d7fdf 100644 --- a/sshsvc/config/config.go +++ b/sshsvc/config/config.go @@ -77,6 +77,8 @@ type YamlConfig struct { PrivProto string `yaml:"privProto"` EngineID string `yaml:"engineID"` TrapPort uint16 `yaml:"trapPort"` + TrapListen bool `yaml:"trapListen"` + TrapBool bool `yaml:"trapBool"` TrapTick uint16 `yaml:"trapTick"` TimeOut uint16 `yaml:"timeOut"` TrapTarget string `yaml:"trapTarget"` diff --git a/sshsvc/etc/sshsvc.yaml b/sshsvc/etc/sshsvc.yaml index d331b813..ed3bacf9 100644 --- a/sshsvc/etc/sshsvc.yaml +++ b/sshsvc/etc/sshsvc.yaml @@ -32,7 +32,7 @@ sshd: mmlHome: ./mmlhome userName: manager password: pass123 - authType: radius + authType: local tagNE: hlr # authType: local/omc @@ -45,7 +45,7 @@ telnetServer: mmlHome: ./mmlhome userName: manager password: pass123 - authType: radius + authType: local tagNE: hlr # authproto: NoAuth/MD5/SHA @@ -58,8 +58,11 @@ snmpServer: authproto: MD5 privPass: "3F2A1B4C5D6E7F8A9B0C1D2E3F4A5B6C7D8E9F0A1B2C3D4E" privProto: DES - engineID: "800007db03360102101100" + #engineID: "800007db03360102101101" + engineID: "8000000004323030313a6462383a3a39313636" trapPort: 34958 + trapListen: true + trapBool: true trapTick: 60 timeOut: 5 trapTarget: "2001:db8::9219" diff --git a/sshsvc/snmp/snmp.go b/sshsvc/snmp/snmp.go index e6b52073..26cf2c9d 100644 --- a/sshsvc/snmp/snmp.go +++ b/sshsvc/snmp/snmp.go @@ -25,6 +25,8 @@ type SNMPService struct { PrivProto string EngineID string TrapPort uint16 + TrapListen bool + TrapBool bool TrapTick uint16 TimeOut uint16 TrapTarget string @@ -222,7 +224,7 @@ func (s *SNMPService) StartTrapServer() { //var engineTime uint32 = 3600 // 使用当前时间初始化 gs := &g.GoSNMP{ Target: s.TrapTarget, - Port: 34958, + Port: s.TrapPort, Transport: "udp", Timeout: time.Duration(s.TimeOut) * time.Second, // 设置超时时间为x秒 Version: g.Version3, // Always using version3 for traps, only option that works with all SNMP versions simultaneously @@ -240,18 +242,22 @@ func (s *SNMPService) StartTrapServer() { }, //TrapSecurityParametersTable: usmTable, ContextEngineID: s.EngineID, - ContextName: "test", + ContextName: "v3test", } tl.Params = gs tl.Params.Logger = g.NewLogger(log.New(os.Stdout, "", 0)) // 定时发送Trap - go s.SendPeriodicTraps(gs) + if s.TrapBool { + go s.SendPeriodicTraps(gs) + } go s.monitorNetwork(gs) - err := tl.Listen(s.TrapHost) - if err != nil { - log.Panicf("error in listen: %s", err) + if s.TrapListen { + err := tl.Listen(s.TrapHost) + if err != nil { + log.Panicf("error in listen: %s", err) + } } } diff --git a/sshsvc/sshsvc.go b/sshsvc/sshsvc.go index 09f22051..6952f893 100644 --- a/sshsvc/sshsvc.go +++ b/sshsvc/sshsvc.go @@ -136,6 +136,8 @@ func main() { PrivProto: conf.SNMPServer.PrivProto, EngineID: conf.SNMPServer.EngineID, TrapPort: conf.SNMPServer.TrapPort, + TrapListen: conf.SNMPServer.TrapListen, + TrapBool: conf.SNMPServer.TrapBool, TrapTick: conf.SNMPServer.TrapTick, TimeOut: conf.SNMPServer.TimeOut, TrapTarget: conf.SNMPServer.TrapTarget,