我有一个 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/