我正在编写一个脚本来安排我的一些服务器上的端口检查,并报告状态。我打算选择以下两种选择之一:
将 netcat (nc) 的输出通过管道传输到 perl 变量中,并检查返回状态
my $rcode=`nc -z 6.6.6.6 80; echo $?`
使用 perl 模块 IO::Socket::PortState 来做同样的事情。
use IO::Socket::PortState qw(check_ports); my %porthash = ( ... ); check_ports($host,$timeout,\%porthash); print "$proto $_ is not open ($porthash{$proto}->{$_}->{name}) if !$porthash{$proto}->{$_}->{open};
我想走更有效(更短,更具体)的路线。
对此有经验法则吗?就像在管道中一样,系统命令/unix 实用程序的输出比使用 perl 模块效率更高/更低?或者不同的 perl 模块是否不同,并且只能通过设置这些检查的多次迭代并将其与执行 unix 实用程序的系统调用所花费的时间进行比较来检查相同的模块?