尝试使用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);
答案 0 :(得分:1)
经过一些调试后,似乎RunCommand方法有一个错误:如果std输入流变空(因为脚本长时间不输出任何内容),它会返回,即使脚本仍在运行。
作为一种变通方法,您可以在派生类上编写固定的RunCommand方法,并在读取流之前执行主动等待m_channel.isClosed()
变为true。