Jelajahi Sumber

优化sshd模块,远程执行指令时记录历史日志,便于溯源

niujiuru 2 minggu lalu
induk
melakukan
35671228bf
6 mengubah file dengan 25 tambahan dan 0 penghapusan
  1. 1 0
      go.mod
  2. 2 0
      go.sum
  3. TEMPAT SAMPAH
      package/rtu_linux_modules_1.0.0.1.tar.gz
  4. TEMPAT SAMPAH
      package/yfkj_ssh_client_v1.0.0.1.tar.gz
  5. 7 0
      sshd/client/client.go
  6. 15 0
      sshd/sshd.go

+ 1 - 0
go.mod

@@ -5,6 +5,7 @@ go 1.24.2
 require (
 	github.com/alexflint/go-filemutex v1.3.0
 	github.com/beevik/ntp v1.5.0
+	github.com/denisbrodbeck/machineid v1.0.1
 	github.com/eclipse/paho.mqtt.golang v1.5.1
 	github.com/google/uuid v1.6.0
 	github.com/jlaffaye/ftp v0.2.0

+ 2 - 0
go.sum

@@ -5,6 +5,8 @@ github.com/beevik/ntp v1.5.0/go.mod h1:mJEhBrwT76w9D+IfOEGvuzyuudiW9E52U2BaTrMOY
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/denisbrodbeck/machineid v1.0.1 h1:geKr9qtkB876mXguW2X6TU4ZynleN6ezuMSRhl4D7AQ=
+github.com/denisbrodbeck/machineid v1.0.1/go.mod h1:dJUwb7PTidGDeYyUBmXZ2GphQBbjJCrnectwCyxcUSI=
 github.com/eclipse/paho.mqtt.golang v1.5.1 h1:/VSOv3oDLlpqR2Epjn1Q7b2bSTplJIeV2ISgCl2W7nE=
 github.com/eclipse/paho.mqtt.golang v1.5.1/go.mod h1:1/yJCneuyOoCOzKSsOTUc0AJfpsItBGWvYpBLimhArU=
 github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=

TEMPAT SAMPAH
package/rtu_linux_modules_1.0.0.1.tar.gz


TEMPAT SAMPAH
package/yfkj_ssh_client_v1.0.0.1.tar.gz


+ 7 - 0
sshd/client/client.go

@@ -16,6 +16,7 @@ import (
 	"syscall"
 	"time"
 
+	"github.com/denisbrodbeck/machineid"
 	"github.com/google/uuid"
 	"github.com/peterh/liner"
 )
@@ -68,6 +69,11 @@ func main() {
 		cwd:      "/",
 	}
 
+	id, err := machineid.ID()
+	if err == nil {
+		coupler.clientID = id
+	}
+
 	if err := coupler.init2(); err != nil {
 		fmt.Printf("[%s] 错误: %v\n!!", MODULE_NAME, err)
 		return
@@ -261,6 +267,7 @@ func printWelcome() {
 提示: 输入'quit'命令, 退出终端
 `
 	fmt.Println(welcome)
+	fmt.Println("id_", coupler.clientID)
 }
 
 func clearScreen() {

+ 15 - 0
sshd/sshd.go

@@ -294,8 +294,23 @@ func (c *MQTTCoupler) execOneCmd(msg mqtt.Message) {
 		ce.state = execRunning
 		ce.mu.Unlock()
 
+		start := time.Now()
+		if true { //////// 记录执行日志-执行前
+			baseapp.Logger.Infof("[%s][▷ EXEC] client=%s cmd=%q dir=%q timeout=%ds",
+				MODULE_NAME, clientID, params.Cmd, params.Dir, params.Timeout)
+		}
+
 		result, err := ce.executor.Exec(params) // 本地执行用户指令
 
+		cost := time.Since(start)
+		if err != nil { // 记录执行日志-执行后
+			baseapp.Logger.Warnf("[%s][✖ EXEC] client=%s cost=%v cmd=%q err=%v",
+				MODULE_NAME, clientID, cost, params.Cmd, err)
+		} else {
+			baseapp.Logger.Infof("[%s][✔ EXEC] client=%s cost=%v cmd=%q",
+				MODULE_NAME, clientID, cost, params.Cmd)
+		}
+
 		ce.mu.Lock()
 		if ce.state != execClosing {
 			ce.state = execIdle