0

尝试使用 Tamir.SharpSsh.SshExec 执行运行时间更长(~30 秒)的 sh 脚本。(脚本在目标机器上运行良好。)大约 12 秒后,RunCommand 调用返回代码 -1。它看起来像一个超时,但我不知道如何配置它。

这是我使用的代码:

var ssh = new SshExec("mylinux", "myuser", "mypassword");
ssh.Connect(22);
string stdOut = "", stdErr = "";
int processExitCode = ssh.RunCommand("./longrunning.sh", ref stdOut, ref stdErr);
4

1 回答 1

1

经过一些调试后,RunCommand 方法似乎有一个错误:如果 std 输入流变空(因为脚本长时间不输出任何内容)它会返回,即使脚本仍在运行。

作为一种解决方法,您可以在派生类上编写一个固定的 RunCommand 方法,并m_channel.isClosed()在读取流之前主动等待变为 true。

于 2015-11-06T21:06:07.307 回答