Golang自定义超时解决方案

时间:2018-01-01 21:24:46

标签: go ssh timeout

我需要为ssh.Dial创建自定义超时解决方案。我尝试在sshConfig中设置超时,但它有时无效,导致整个程序挂起。

connection, err := ssh.Dial("tcp", "X.X.X.X:22", sshConfig)

在某些情况下,它超时,它适用于其他情况。但它偶然发现了特定的IP,并没有任何。它只是挂起了整个程序。

那么我如何为这行代码编写“我自己的”超时解决方案呢?

2 个答案:

答案 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中。