我需要为ssh.Dial
创建自定义超时解决方案。我尝试在sshConfig中设置超时,但它有时无效,导致整个程序挂起。
connection, err := ssh.Dial("tcp", "X.X.X.X:22", sshConfig)
在某些情况下,它超时,它适用于其他情况。但它在特定的IP上遇到了麻烦,并没有做任何事情。它只是挂起了整个程序。
那么我如何为这行代码编写“我自己的”超时解决方案呢?
看起来配置需要超时。见: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})
这是否有效:
c1 := make(chan bool, 1)
go RunRequest(element, authInfo, c1)
select {
case <-c1:
case <-time.After(time.Second * 4):
}
ssh.Dial位于RunRequest GoRoutine中。