我需要从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。
答案 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秒后超时。