Perl SSH连接输出问题

时间:2016-08-25 10:19:15

标签: perl shell ssh

我使用Net :: SSH2模块在ssh上执行多个命令。

我的问题如下:

有时如果我发送命令,我得不到输出。该命令仍然执行我只是没有得到响应。有时我会在我发送的下一个命令的输出中得到响应。

我怀疑它试图在它出现在shell之前得到输出但是它应该至少返回shell" welcome line" (在shell启动时)如果它是第一个命令,但有时我根本没有输出。在这一点上,我只是不知道该怎么做。

我试过

  • 以多个论坛中描述的方式获取输出,例如来自this demo。
  • 在发送命令和抓取输出之间添加睡眠。在大多数时候都有所帮助,但它仍然会发生。并且必须单独确定每个命令的休眠时间是不可行的。特别是因为1s似乎对某些事件有所帮助,对其他事情没有帮助。
  • 多次运行命令,导致下一个命令有时会从上一个命令中获取输出。
  • 推送到输出的最后一行是一个结果相同的提示:ok或0行。

我的实施

var np = Node.prototype;

// {enumerable: true, configurable: true ,get , set} // Ch/FF/Op
// {enumerable: true, configurable: true ,undefined , undefined} // Safari
var npDescriptor = Object.getOwnPropertyDescriptor(np, 'nodeValue');

var npOlderSetter = npDescriptor.set; // undefined 


Object.defineProperty(np, 'nodeValue', {

   set: function(text){

     alert('I want to do something befroe ...');

     // because npOlderSetter is undefined , so i can't do this.
     // but how can i set the nodeValue to the node ?
     // npOlderSetter.call(this, text);

   }
 })

我必须注意到,我已经尝试过使用python + paramiko并没有使用perl的用例,而且似乎工作得很好(没有经过考验)。

更新26.08(部分解决)

我已经重试了(感谢@jcaron让我重试)推送直到出现提示,这似乎适用于大多数(重要)案例。事实证明,当我第一次尝试该方法时,在现有方法的基础上存在另一个问题,在那里我根本没有得到该特定主机的输出(甚至在延迟/重复命令之后)。再次使用python / paramiko它可以工作但不是我在perl中的实现。但是,由于该特定主机组的输出不那么重要,所以没问题。

0 个答案:

没有答案