URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID15
Нить номер: 3667
[ Назад ]

Исходное сообщение
"Конечно смешно до анекдота но tcpdump"

Отправлено Valerius , 25-Окт-11 20:00 
Это моя жалкая попытка разкинуть результат по массивам, но до этого - "как до неба раком".

Есть банальный скрипт

#!/usr/bin/perl
open(STDIN,"/usr/sbin/tcpdump |");
while(<STDIN>)
{
   ($a, $s, $d, $f, $g, $h) = split(';');
   .....  сюда всуну код на выполнение в базу ...........
   print "$a, $s, $d, $f, $g, $h\n";
}

Результат выводит отлично любой, кроме

open(STDIN,"/usr/sbin/tcpdump src port 67 |");

Он мне просто "мило улыбнулся, и сказал что он работает" при это выводя

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

И мило улыбается дальше. При этом не реагируя вообще ни на что.
Меняю порт, все прекрасно показывает.

Пробывал tcpdump src port 67 | awk .............
Результат аналогичен 0.

Во все что касается 67 порта = 0.

Ребята.
Может кто нибуди подсказать - почему скрипт не воспроизводит результат?
Я пытаюсь вообще как либо прослушать ответ от DHCP-клиента с его IP, и запустить скрипт.

Зарание спасибо.


Содержание

Сообщения в этом обсуждении
"Конечно смешно до анекдота но tcpdump"
Отправлено erera22 , 25-Окт-11 22:46 
Сервер на 67 порт принимает сообщения от клиентов:

#!/usr/bin/perl -w
use strict;

my @content = `/usr/sbin/tcpdump -i eth0 -n -t -c 5 dst port 67`;
foreach my $str (@content) {
   my ($src, $dst, $proto, $smac, $length) = (split /[\s\,]/, $str)[1, 3, 4, 8, 11];
   $dst =~ s/\:$//;
   print "$src, $dst, $proto, $smac, $length\n";
}


"Конечно смешно до анекдота но tcpdump"
Отправлено Valerius , 26-Окт-11 00:21 
>[оверквотинг удален]
> #!/usr/bin/perl -w
> use strict;
> my @content = `/usr/sbin/tcpdump -i eth0 -n -t -c 5 dst port
> 67`;
> foreach my $str (@content) {
>    my ($src, $dst, $proto, $smac, $length) = (split /[\s\,]/,
> $str)[1, 3, 4, 8, 11];
>    $dst =~ s/\:$//;
>    print "$src, $dst, $proto, $smac, $length\n";
> }

Спасибо большое.

Все офигенно. Но по идее что-то у меня с машиной не то.

Взял твой скрипт, работает через 2 раза.
Взял команду, вообще бред какой-то. То 0.0.0.0 дождался, то с 2-го - 3-го раза (в windows исправить) поймал.


"Конечно смешно до анекдота но tcpdump"
Отправлено erera22 , 26-Окт-11 13:25 
Если 0.0.0.0, то строка, видимо, подобна этой:
IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:25:90:08:eb:02, length 548

Смотрите нам MAC, ищите кто послал пакет.