Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Renci SshNet运行命令时客户端崩溃_C#_Ssh - Fatal编程技术网

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

C# 使用Renci SshNet运行命令时客户端崩溃,c#,ssh,C#,Ssh,目前,当我按下按钮时,它应该重新启动我们的一台服务器,并在完成后返回结果。该命令运行成功,但运行后,客户端崩溃,因为从技术上讲,该命令从未真正完成 运行该命令后,服务器开始运行,并将继续在控制台中输出有关服务器的服务器信息。我如何使它在15秒后,或者当输出流返回空时,默认情况下停止 我对C#还不熟悉,所以不知道如何处理这个问题 private void button1_Click(object sender, EventArgs e) { using (var c

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

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

我对C#还不熟悉,所以不知道如何处理这个问题

    private void button1_Click(object sender, EventArgs e)
    {
        using (var client = new SshClient("IP", "USER", "PASS"))
        {

            label1.Text = "Status: Initiated restart";
            client.Connect();
            var cmd = client.RunCommand("./server restart && ./server2 restart");
            var result = cmd.Execute();


            client.Disconnect();

            label1.Text = "Status: Restart completed";
        }
    }

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

我不太确定是否正确,但我会围绕有问题的代码进行
try
catch
,尤其是在这种情况下,如果您不关心输出

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";
    }
}

我不太确定我是否理解正确,但我会围绕有问题的代码进行
try
catch
,尤其是如果您不关心这种情况下的输出

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";
    }
}

不幸的是,这不起作用,仍然只是永远崩溃。命令被执行了,这是肯定的。在控制台中,我得到了这样的信息:也许这在某种程度上有帮助
code 0x0
不应该使应用程序崩溃。代码是否运行到异常中?如果是,你会得到什么例外?或者代码中的哪一行导致应用程序崩溃?出于某种原因,它没有运行到异常中。因此catch语句没有输出任何内容:/Sorry@josibu,我读错了句子。它根本没有遇到异常,所以我不确定它当前在哪里崩溃。不幸的是,这不起作用,仍然永远崩溃。命令被执行了,这是肯定的。在控制台中,我得到了这样的信息:也许这在某种程度上有帮助
code 0x0
不应该使应用程序崩溃。代码是否运行到异常中?如果是,你会得到什么例外?或者代码中的哪一行导致应用程序崩溃?出于某种原因,它没有运行到异常中。因此catch语句没有输出任何内容:/Sorry@josibu,我读错了句子。它根本没有运行到异常中,所以我不确定它当前在哪里崩溃。你应该声明异常[你没有捕获]。是的,这是奇怪的部分,没有异常:/你应该声明异常[你没有捕获]。是的,这是奇怪的部分,没有异常:/