如何检查Ssh.NET连接是否成功建立?

5
我想了解如何使用Ssh.NET判断连接是否成功建立:
SshClient client = new SshClient("127.0.0.1", 22, "root", "");
client.Connect();

// Connection ok? Then continue, else display error

SshCommand x = client.RunCommand("service apache2 status");
client.Disconnect();
client.Dispose();

我该如何逻辑上证明"client.RunCommand("service apache2 status");"的结果呢?
例如,如果(x == "apache2 is running")

3个回答

6

有时候你会被眼前的细节迷惑,而忽略了整体大局。 - udgru
1
注意:我遇到了一个问题,即在一段时间内保持了一个未使用的连接。 IsConnected 返回 true,但调用 ListDirectory 会导致错误(System.NotSupportedException: Request 'ping' is not supported.)。这不能通过 KeepAliveInterval 来解决。相反,我必须在每次使用后断开连接以强制 IsConnected 返回 false,并因此在每个请求上创建一个新连接。希望这个评论能帮助将来的某个人... - JohnLBevan
我遇到的问题是,我的代码从未进入“if(client.isConnected())”,因为它会抛出异常而程序中断。如何循环处理多个客户端,并且如果其中一些关闭,则希望代码只尝试下一个。 - Yakuman

1
您可以使用 client.IsConnected 进行此操作。
using (var client = new SshClient("127.0.0.1", 22, "root", "")) {
    client.Connect();

    if (client.IsConnected) {
        SshCommand x = client.RunCommand("cd ~");
    } else {
        Console.WriteLine("Not connected");
    }

    client.Disconnect();
}

1
我在第一行添加了一个using。如果代码到达using块的末尾,它将自动处理在using中声明的变量,因此在这种情况下是var client(SshClient)。 - Owain van Brakel

0

尝试使用IsConnected属性

If cSSH.IsConnected Then
    Dim x As SshCommand = cSSH.RunCommand("service apache2 status")
    con.Text = "Success"
Else
    con.Text = "Error! Connection Failed"
End If

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接