📅  最后修改于: 2023-12-03 15:29:07.783000             🧑  作者: Mango
如果你需要在 C# 中使用 SSH 与远程服务器交互,那么 .NET SSH 库是一个不错的选择,因为它提供了一个易于使用的接口和许多有用的功能,包括等待命令执行结果。
首先,你需要在你的项目中安装 .NET SSH 库。在 NuGet 包管理器中搜索“SSH.NET”并安装它。或者,你也可以手动下载 DLL 文件并添加到你的项目中。
连接到远程服务器需要创建一个 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()
方法即可完成大部分工作。