在 ssh 连接上创建 DialTimeout 的最佳方法是什么?例如,此代码始终返回“Ping 截止日期超出”:
func (t *Tunnel) ping(sshConn *ssh.Client, addr string) (net.Conn, error) {
var (
conn net.Conn
err error
done chan int
)
go func() {
time.Sleep(getSeconds(10))
err = errors.New("Ping deadline exceed")
log.Printf("%v\nStatus: bad %s -> %s", err, t.serverAddr, addr)
t.writeStatus(bad)
done <- 1
close(done)
}()
go func() {
conn, err = sshConn.Dial("tcp", addr)
if err != nil {
t.writeStatus(bad)
log.Printf("%v\nStatus: bad %s -> %s", err, t.serverAddr, addr)
}
done <- 1
close(done)
}()
<-done
return conn, err
}
Run Code Online (Sandbox Code Playgroud)
PS ssh.ClientConfig 中的超时设置为 5 秒
Rya*_*est -1
不使用 sshConn.Dial 看一下:
func DialTimeout(network, address string, timeout time.Duration) (Conn, error)
Run Code Online (Sandbox Code Playgroud)
从连接文档:
DialTimeout 的作用与 Dial 类似,但需要超时。如果需要,超时包括名称解析。
| 归档时间: |
|
| 查看次数: |
4116 次 |
| 最近记录: |