如何在没有超时的情况下从ShellStream获取命令输出?

时间:2018-04-04 11:48:42

标签: c# ssh

我使用ssh.net在C#中执行命令 但是每个命令返回的结果都是在不同的时间发生的。

我使用了线程,但是使用特定值需要超时。 我需要在输出时获得输出

我的代码:

protected void Page_Load(object sender, EventArgs e)
{
    string Username = "xxxxxxxx";
    string Password = "xxxxxxxxxx";
    string IP = "xxxxxxxxxx";
    int Port = xxxxxxxxx;

    SshClient client = new SshClient(IP, Port, Username, Password);
    client.Connect();
    var shell = client.CreateShellStream("xxxx", 5000, 10000, 10000, 10000, 40072);

    string output = ArrangeData("stelnet xxxxxxxx", shell);
    output += ArrangeData("cmd1", shell);
    output += ArrangeData("cmd2", shell);
    output += ArrangeData("cmd3", shell);
}

public static string ArrangeData(string cmd, ShellStream sh)
{
    StreamReader reader = null;
    reader = new StreamReader(sh);
    sh.Flush();
    sh.WriteLine(cmd);

    ---->Thread.Sleep(timeout);

    string output = reader.ReadToEnd();
    return output;
}

当前解决方案是在线程中超时

但是,我需要删除此超时,因为我不知道它何时响应我的命令。

0 个答案:

没有答案