我正在尝试运行 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";
}
}
但它似乎不起作用,因为......如果没有用户中断,命令的执行就不会结束......
可以这样做吗?运行命令并同时对其输出执行操作?
答案 0 :(得分:0)
在shell中运行tcpstat
命令并将输出通过管道传输到perl
脚本。
tcpstat -i eth1 -f icmp[0]==8 -o %C | perl script.pl
通过这种方式,您应该期望从<STDIN>
输入,并删除perl中的system
来电。