Fix: 增强SSH会话管理和错误处理
- 添加会话创建重试机制(最多3次) - 允许部分命令失败而不中断整个扫描 - 改进错误提示和日志输出 - 解决H3C设备LLDP命令会话拒绝问题
This commit is contained in:
+18
-2
@@ -121,9 +121,25 @@ func (c *Client) ExecuteCommand(command string) (string, error) {
|
||||
return "", fmt.Errorf("not connected")
|
||||
}
|
||||
|
||||
session, err := c.client.NewSession()
|
||||
// 重试机制,处理会话创建失败的情况
|
||||
var session *ssh.Session
|
||||
var err error
|
||||
maxRetries := 3
|
||||
|
||||
for i := 0; i < maxRetries; i++ {
|
||||
session, err = c.client.NewSession()
|
||||
if err == nil {
|
||||
break
|
||||
}
|
||||
|
||||
// 如果是会话拒绝错误,等待后重试
|
||||
if i < maxRetries-1 {
|
||||
time.Sleep(time.Duration(i+1) * 500 * time.Millisecond)
|
||||
}
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to create session: %w", err)
|
||||
return "", fmt.Errorf("failed to create session after %d retries: %w", maxRetries, err)
|
||||
}
|
||||
defer session.Close()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user