Perl-скрипт, фильтрующий Ethernet-пакеты wireshark

Я разрабатываю демон агента инвентаризации, поэтому в настоящее время я пытаюсь создать сценарий perl, который будет анализировать пакеты Ethernet с использованием протокола LLDP.

Я использую фильтры Ethernet tshark, чтобы получить эти данные, а затем распечатать их.

@ARGV = ``tshark -i ether proto \0x88cc'`;

while (@ARGV)
{
    my $item =  @ARGV;
    print "$item \n";   
}

Это приводит к ошибкам компиляции: Can't exec "tshark".

Я думаю, что неправильно передаю параметры фильтра tshark в командную строку, но, насколько мне известно, обратные кавычки используются для захвата вывода аргументов командной строки.


person Josh Balta    schedule 02.11.2013    source источник


Ответы (1)


Я не знаю о tshark. Но если tshark -i ether proto \0x88cc является исполняемой командой из оболочки, попробуйте следующее, иначе предоставьте более подробную информацию.

my @output= `tshark -i ether proto \0x88cc`;
foreach my $item (@output) {
    print "${item}\n";
}
person jkshah    schedule 02.11.2013
comment
Я все еще получаю ту же ошибку, поэтому, похоже, это формат команды. Для получения необходимых команд использовался следующий документ: linuxhowtos.org/manpages/7/ pcap-filter.htm - person Josh Balta; 02.11.2013
comment
@ JoshBalta800 В таком случае, не могли бы вы сначала протестировать его в командной строке оболочки? Предоставьте результат, если он работает нормально. Извините, что могу помочь только в perl части. - person jkshah; 02.11.2013
comment
протестировав это в командной строке, используя #tshark ether proto '0x88cc', я обнаружил, что пакет tshark отсутствует, поэтому я запустил sudo apt-get для установки tshark, и это решило проблему. - person Josh Balta; 06.11.2013