gpt4 book ai didi

c# - SharpSsh 命令执行

转载 作者:太空宇宙 更新时间:2023-11-04 10:54:28 29 4
gpt4 key购买 nike

我正在尝试使用 C# 创建 SSH 客户端。我正在使用 Tamir.SharpSsh 库。我在发送命令和从服务器获得适当响应时遇到问题。

我一直在测试它的方法是发送 ls 命令,然后是 cd.. 命令,然后是 ls 命令再次 -- 查看 cd.. 命令是否正确执行。但是,第一个 ls 命令和第二个 ls 命令之间没有区别。我不完全确定我做错了什么。也许我使用了错误的 Ssh 类型。我已经提供了代码和我得到的输出。我还添加了我期望的输出。

using Tamir.SharpSsh;

namespace SSHNetExample
{
class Program
{
static void Main(string[] args)
{
SshExec ssh = null;
try
{
Console.Write("-Connecting...");
ssh = new SshExec(host, username, password);

ssh.Connect();

Console.WriteLine("OK ({0}/{1})", ssh.Cipher, ssh.Mac);
Console.WriteLine("Server version={0}, Client version={1}", ssh.ServerVersion, ssh.ClientVersion);
Console.WriteLine("-Use the 'exit' command to disconnect.");
Console.WriteLine();

while(true)
{
string command = Console.ReadLine();

if(command == "exit")
break;
string data = ssh.RunCommand(command);

Console.WriteLine(data);
}
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}

if(ssh != null)
{
Console.WriteLine("Disconnecting...");
ssh.Close();
Console.WriteLine("OK");
}
}
}
}

输出: enter image description here

预期输出: enter image description here

最佳答案

SshExec 类用于执行单个命令。它为每个命令登录到服务器,并执行您要求它执行的命令。这与您登录时类似(但不相同),键入 cd ..,再次注销,再次登录并键入 ls - 当您第二次登录时您被重定向到主目录。

如果你想继续使用 SshExec,你应该组合你的命令,这样你就可以只执行一个命令。例如,在这种情况下,您将执行 ls ..

如果您希望能够像交互式 session 一样发出多个命令,请查看 SshShell 类而不是 SshExec

关于c# - SharpSsh 命令执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29395200/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com