【问题标题】:Unable to get output from remote Device using Net::SSH2无法使用 Net::SSH2 从远程设备获取输出
【发布时间】:2017-03-18 00:01:28
【问题描述】:

我正在尝试通过 Net::SSH2 连接到远程设备。如果我使用 $channel->blocking(0) 方法,那么即使连接和身份验证成功,我也不会从设备获得任何输出。如果我不使用 $channel->blocking(0),那么我得到了输出,但提示一直在闪烁,从某种意义上说程序卡住了。

代码

use Net::SSH2;
use strict;

$ssh = Net::SSH2->new()

$ssh->connect('xx.xx.xx.xx'))

$ssh->auth(username => 'xxxx', password => 'xxxx'))

my  $channel = $ssh->channel() or do { print" [LOG ERROR]: Failed to create channel. Exiting ...\n"};

$channel->blocking(0);

$channel->shell() ;

print $channel "show status \n";

while(<$channel>)
  {
     print $_;
  }

$channel->close(); 

$ssh->disconnect();

有人可以帮忙吗。

【问题讨论】:

  • 如果您使用shell,那么您必须与远程外壳“对话”。它不会卡住,它只是在那里等着你输入更多的命令。

标签: perl ssh blocking


【解决方案1】:

也许debug 可以帮助您解决问题。如果您使用shell 没有特别的原因,请尝试将其替换为exec。你可以采纳这个example

use warnings 也总是有用的。

【讨论】:

  • 使用 exec 我只能执行一个命令。根据我的要求,我需要阅读多个命令。你能帮忙吗?
  • 很遗憾没有,因为我也有一个与 perl Net::SS2 相关的 issue 并切换到 ncclient
猜你喜欢
  • 1970-01-01
  • 2019-05-30
  • 2018-03-14
  • 2018-06-17
  • 2015-09-16
  • 1970-01-01
  • 1970-01-01
  • 2015-10-31
  • 1970-01-01
相关资源
最近更新 更多