Я пытаюсь запустить команду tcpstat , которая дает вывод о количестве полученных icmp запросов. и в то же время мне нужно проверить счетчик, чтобы, если он превысил некоторый порог, должно отображаться сообщение.Выполнение команды tcpstat и одновременное выполнение операций на ее выходе
я пытался что-то вроде этого
#!/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";
}
}
, но это не похоже на работу, потому что .. выполнение команды не заканчивается без прерывания пользователя ...
является его это можно сделать? запускать команду и одновременно выполнять операции над ее выходом?
та же проблема .. он дает мне пустой экран с мигающим курсором. возможно потому, что элемент управления не переходит в цикл while, пока команда tcp stat не завершит выполнение. –
Чтобы проследить его, вы можете добавить несколько вызовов 'print' и узнать, где он заблокирован. Подумайте, буферизуется ли входной сигнал или нет. Проверьте это http://stackoverflow.com/questions/12351500/perl-disable-buffering-input – VoidPointer