执行tcpstat命令并同时对其输出执行操作

时间:2013-07-17 17:35:32

标签: linux perl tcp icmp

我正在尝试运行 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";
}
}

但它似乎不起作用,因为......如果没有用户中断,命令的执行就不会结束......

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

1 个答案:

答案 0 :(得分:0)

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

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

通过这种方式,您应该期望从<STDIN>输入,并删除perl中的system来电。