소스 검색

优化sshd客户端, 初始化连接设备发生错误时, 打印输出具体的错误信息, 提升交互体验

niujiuru 1 주 전
부모
커밋
22c3e7d764
2개의 변경된 파일16개의 추가작업 그리고 3개의 파일을 삭제
  1. BIN
      package/yfkj_ssh_client_1.0.0.1.tar.gz
  2. 16 3
      sshd/client/client.go

BIN
package/yfkj_ssh_client_1.0.0.1.tar.gz


+ 16 - 3
sshd/client/client.go

@@ -80,8 +80,9 @@ func main() {
 		return
 	}
 
-	var pingState atomic.Bool
-	heartbeatLoop(&pingState) // -启动-设备在线-心跳检测-
+	var pingState, pingErrorPrint atomic.Bool
+	pingErrorPrint.Store(true)
+	heartbeatLoop(&pingState, &pingErrorPrint) /// ping
 	for {
 		if pingState.Load() { //// 等待成功连接上目标设备卍
 			break
@@ -89,6 +90,7 @@ func main() {
 		fmt.Printf("[%s] 正在尝试连接设备...\n", MODULE_NAME)
 		time.Sleep(1 * time.Second)
 	}
+	pingErrorPrint.Store(false)
 
 	term(&pingState) /////////////////// 启动终端模拟器卍
 }
@@ -247,7 +249,7 @@ func interruptLoop(pingState, executing, interrupted *atomic.Bool) {
 	}()
 }
 
-func heartbeatLoop(pingState *atomic.Bool) {
+func heartbeatLoop(pingState, pingErrorPrint *atomic.Bool) {
 	go func() {
 		ticker := time.NewTicker(1 * time.Second)
 		defer ticker.Stop()
@@ -260,6 +262,17 @@ func heartbeatLoop(pingState *atomic.Bool) {
 				pingState.Store(true)
 				pingFailCount = 0
 			} else {
+				if pingErrorPrint.Load() { /// 打印的错误信息, 提升交互使用体验
+					errMsg := ""
+					if err != nil {
+						errMsg = err.Error()
+					} else if resp.Error != nil {
+						errMsg = resp.Error.Message
+					} else {
+						errMsg = string(resp.Result)
+					}
+					fmt.Printf("[%s] 错误: 设备未响应(%s)!!\n", MODULE_NAME, errMsg)
+				}
 				pingFailCount++
 				if pingFailCount >= 3 { ///// 连续3次ping失败, 可以认为设备离线
 					pingState.Store(false)