我需要为ssh.Dial
创建自定义超时解决方案。我尝试在sshConfig中设置超时,但它有时无效,导致整个程序挂起。
connection, err := ssh.Dial("tcp", "X.X.X.X:22", sshConfig)
在某些情况下,它超时,它适用于其他情况。但它偶然发现了特定的IP,并没有任何。它只是挂起了整个程序。
那么我如何为这行代码编写“我自己的”超时解决方案呢?
答案 0 :(得分:1)
看起来配置需要超时。请参阅:https://godoc.org/golang.org/x/crypto/ssh#ClientConfig
换句话说,:
conn, err := ssh.Dail("tcp", "X.X.X.X:22", ssh.ClientConfig{Timeout: time.Second * 4})
答案 1 :(得分:0)
这是否有效:
c1 := make(chan bool, 1)
go RunRequest(element, authInfo, c1)
select {
case <-c1:
case <-time.After(time.Second * 4):
}
ssh.Dial位于RunRequest GoRoutine中。