Golang定制超时解决方案

问题描述 投票:-1回答:2

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

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

在某些情况下,它超时,它适用于其他情况。但它在特定的IP上遇到了麻烦,并没有做任何事情。它只是挂起了整个程序。

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

go ssh timeout
2个回答
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})

0
投票

这是否有效:

    c1 := make(chan bool, 1)
    go RunRequest(element, authInfo, c1)
    select {
        case <-c1:
        case <-time.After(time.Second * 4):
    }

ssh.Dial位于RunRequest GoRoutine中。

© www.soinside.com 2019 - 2024. All rights reserved.