SshExec RunCommand在12秒后返回退出代码-1(超时?)

时间:2015-11-04 23:02:40

标签: c# .net ssh timeout sharpssh

尝试使用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);

1 个答案:

答案 0 :(得分:1)

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

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