Perl скрипт, филтриращ wireshark ethernet пакети

Разработвам демон на агент за инвентаризация, така че в момента се опитвам да създам 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 е изпълнима команда от shell, опитайте да следвате else, моля, предоставете повече подробности

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