使用Net :: SSH2

时间:2015-08-07 14:38:28

标签: windows perl ssh

我需要从windows

使用Net :: SSH2获取远程sshd版本
   ./check_ssh -H exemple.com 
    OpenSSH_6.0p1  (Protocol 2.0)

如果ssh关闭,只显示连接被拒绝或套接字超时(如果没有明确拒绝连接)。

最终目的是从windows框模拟check_ssh nagios插件的行为。我将从该Windows框连接到unix设备,并通过nrpe将我的脚本结果发送到nagios。

我不需要登录。 我一直试图在dwim perl Net :: SSH :: Perl中安装但没有成功,我设法安装的唯一一个是Net :: SSH2。我不需要支持ssh v1。

2 个答案:

答案 0 :(得分:2)

您可以使用IO::Socket::INET模块。例如:

$ cat ssh.pl
#!/usr/bin/perl

use IO::Socket::INET;

my $socket = IO::Socket::INET->new(
  PeerHost => 'localhost',
  PeerPort => 22,
);

$socket->print("\n");
my $output = join '', $socket->getlines();

print $output;

输出结果如下:

$ ./ssh.pl
SSH-2.0-OpenSSH_6.2
Protocol mismatch

从这一点开始,您只需要解析输出。

答案 1 :(得分:0)

如果您可以安装netcat实用程序,则可以使用它来检查它。例如:

 my $NC = `nc -w 1 localhost 22`;
 print $NC;

在此示例中,netcat连接到端口22上的localhost,并在1秒后超时。