go - 3 秒后关闭 SSH session

标签 go ssh

我有一个 for 循环,它将通过 SSH 连接到服务器,终止一些进程。我遇到的问题是我的程序在终止所有无法运行的进程(包括 SSH)后尝试重新连接到服务器。程序崩溃。

如何在 3 秒后关闭 ssh 连接并继续 for 循环?

 for i := 0; i < 900; i++ {
    // pick random number
    randomServer := fmt.Sprint(serverList[rand.Intn(len(serverList))])

    // print info
    logrus.Warn("Loop: ", i)
    logrus.Warn("Connecting to: ", randomServer)

    // connect to server
    cli := ssh.NewSSHClient("root", randomServer)

    // execute any command
    cli.ExecuteCmd("killall5")
    cli.ExecuteCmd("exit")
}

最佳答案

我不知道您使用的是什么 ssh 库,但根据您的代码,它可以是 this

为避免程序崩溃,您需要检查 ssh 连接是否已成功建立。为此,请检查 ssh.NewSSHClient 产生的错误

for i := 0; i < 900; i++ {
    // pick random number
    randomServer := fmt.Sprint(serverList[rand.Intn(len(serverList))])

    // print info
    logrus.Warn("Loop: ", i)
    logrus.Warn("Connecting to: ", randomServer)

    // connect to server
    cli, err := ssh.NewSSHClient("root", randomServer)
    if err != nil {
        fmt.Println(err)
        continue;
    }

    // execute any command
    cli.ExecuteCmd("killall5")
    cli.ExecuteCmd("exit")
}

关于go - 3 秒后关闭 SSH session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45162792/

相关文章:

http - 使用 mime/multipart 上传会损坏文件

linux + ssh 限制 + ssh 同时从多台机器到一台机器

Golang 相当于 itertools.chain?

mysql - 使用 Golang 将 SQL 查询结果放入嵌套结构中

go - 带有 %e 错误的字符串格式

java - 如何使用同一个 shell 通过 JSCH 执行多个 unix 命令?

通过 VPN 连接的 SSH

java - 调用 shell 脚本包含来自 java 的 SSH

c# - SSH.NET 上传整个文件夹

Golang 工作池实现意外工作