0

我正在尝试运行一个tcpstat命令,该命令提供有关接收到的icmp请求数的输出。同时我需要检查计数,以便如果它超过某个阈值,则应显示一条消息。

我试过这样的东西

#!/usr/bin/perl

my @count= system "tcpstat -i eth1 -f icmp[0]==8 -o %C";

my $i=0;
while ($i<1000)
{
print "count of packets is :".$count[$i]."\n";
$i=$i+1;
if($count[$i]>50)
{   
print "thats a lot of pings";
}
}

但它似乎不起作用,因为......命令的执行不会在没有用户中断的情况下结束......

可以这样做吗?运行命令并同时对其输出执行操作?

4

1 回答 1

0

在 shell 中运行您的tcpstat命令并将输出通过管道传输到您的perl脚本。

tcpstat -i eth1 -f icmp[0]==8 -o %C  |  perl script.pl

这样,您当然应该期望您的输入来自perl<STDIN>并删除systemperl 中的调用。

于 2013-07-17T17:48:20.257 回答