当前,当我按下按钮时,应该重新启动我们的一台服务器,并在完成后返回结果。该命令成功运行,但是运行后,客户端崩溃,因为从技术上讲该命令从未真正完成。
运行命令后,服务器开始运行,它将继续在控制台中输出有关服务器的服务器信息。我将如何设置它,使其在15秒后默认停止,或者在输出流返回空时停止。
我是C#的新手,所以不确定如何处理此问题。
{{1}}
这是我的代码。通常,如果键入命令(如LS),它将返回输出,然后再次键入。但是在这种情况下,服务器将继续运行,因此它不会再让您键入任何内容,因此由于该命令仍在运行,因此无法识别为命令已完成。
答案 0 :(得分:0)
我不太确定我是否正确,但是我会将try
和catch
包装在有问题的代码周围,尤其是在这种情况下,如果您不关心输出的话。 / p>
private void button1_Click(object sender, EventArgs e)
{
using (var client = new SshClient("IP", "USER", "PASS"))
{
label1.Text = "Status: Initiated restart";
try
{
client.Connect();
var cmd = client.RunCommand("./server restart && ./server2 restart");
var result = cmd.Execute();
client.Disconnect();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
label1.Text = "Status: Restart completed";
}
}