📜  .net ssh,等待命令执行 - C# (1)

📅  最后修改于: 2023-12-03 15:29:07.783000             🧑  作者: Mango

使用 .NET SSH 等待命令执行

如果你需要在 C# 中使用 SSH 与远程服务器交互,那么 .NET SSH 库是一个不错的选择,因为它提供了一个易于使用的接口和许多有用的功能,包括等待命令执行结果。

安装 .NET SSH 库

首先,你需要在你的项目中安装 .NET SSH 库。在 NuGet 包管理器中搜索“SSH.NET”并安装它。或者,你也可以手动下载 DLL 文件并添加到你的项目中。

连接 SSH

连接到远程服务器需要创建一个 SshClient 实例。首先,你需要定义连接参数,例如主机名、用户名、密码和 SSH 端口号。然后,你可以使用以下代码建立连接:

using (var client = new SshClient("hostname", "username", "password"))
{
    client.Connect();
    // 连接成功,执行下一步操作
    client.Disconnect();
}
执行命令并等待结果

在连接成功后,你可以使用 SshClient.RunCommand() 方法来执行远程服务器的命令。这个方法将返回一个 SshCommand 对象,你可以使用它来等待命令执行的结果。

using (var client = new SshClient("hostname", "username", "password"))
{
    client.Connect();

    var cmd = client.RunCommand("ls -l");
    // 等待命令执行
    cmd.Wait();

    // 获取命令输出
    var result = cmd.Result;

    client.Disconnect();
}

在执行命令期间,你可以通过设置 cmd.CommandTimeout 属性来设置命令超时。默认情况下,命令超时时间为 60 秒。

异步执行命令并等待结果

如果你需要在后台执行命令,你可以使用 SshCommand.BeginExecute() 方法。这个方法将返回一个 IAsyncResult 对象,你可以使用它来等待命令执行的结果:

using (var client = new SshClient("hostname", "username", "password"))
{
    client.Connect();

    var cmd = client.CreateCommand("ls -l");
    var asyncResult = cmd.BeginExecute();

    // 等待命令执行
    while (!asyncResult.IsCompleted)
    {
        // 在此处执行一些其他操作
    }

    // 获取命令输出
    var result = cmd.EndExecute(asyncResult);

    client.Disconnect();
}
结论

使用 .NET SSH 库可以方便地在 C# 中连接到远程服务器,并执行命令。你可以同步或异步执行命令,并等待命令执行的结果。你只需要设置连接参数并使用 SshClient.RunCommand()SshCommand.BeginExecute() 方法即可完成大部分工作。