例如命令 1 = cd/somedir 命令 2 = pwd 并且命令 2 的结果是 /somedir
你的例子似乎很好。但我认为,您希望更改目录并在该目录中运行第二个命令。
服务器连接是到服务器的 ssh 隧道,它不会启动 shell。RunCommand() 创建一个 shell 并运行一个命令,第二个 RunCommand 也创建一个新的 shell 并运行该命令,因此更改目录不会在命令之间持续存在。
建立连接后,使用 ShellStream 创建一个 shell,您可以从中发送和接收交互式命令。
来自codeplex的示例:
string command = "your command";
using (var ssh = new SshClient(connectionInfo))
{
ssh.Connect();
string reply = String.Empty;
try
{
using (var shellStream = ssh.CreateShellStream("dumb", 0, 0, 0, 0, BUFFERSIZE))
{
// Wait for promt for 10 seconds, if time expires, exception is thrown
reply = shellStream.Expect(new Regex(@":.*>"), new TimeSpan(0, 0, 10));
shellStream.WriteLine(command);
// Wait for Read for 10 seconds, if time expires, exception is thrown
string result = shellStream.ReadLine(new TimeSpan(0, 0, 10));
}
}
catch
{
// Do something
}
}