使用Renci SshNet运行命令时客户端崩溃

时间:2019-08-18 00:48:02

标签: c# ssh

当前,当我按下按钮时,应该重新启动我们的一台服务器,并在完成后返回结果。该命令成功运行,但是运行后,客户端崩溃,因为从技术上讲该命令从未真正完成。

运行命令后,服务器开始运行,它将继续在控制台中输出有关服务器的服务器信息。我将如何设置它,使其在15秒后默认停止,或者在输出流返回空时停止。

我是C#的新手,所以不确定如何处理此问题。

{{1}}

这是我的代码。通常,如果键入命令(如LS),它将返回输出,然后再次键入。但是在这种情况下,服务器将继续运行,因此它不会再让您键入任何内容,因此由于该命令仍在运行,因此无法识别为命令已完成。

1 个答案:

答案 0 :(得分:0)

我不太确定我是否正确,但是我会将trycatch包装在有问题的代码周围,尤其是在这种情况下,如果您不关心输出的话。 / 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";
    }
}
相关问题