The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Конечно смешно до анекдота но tcpdump"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на рабочей станции (Консоль / Linux)
Изначальное сообщение [ Отслеживать ]

"Конечно смешно до анекдота но tcpdump"  +/
Сообщение от Valerius (ok) on 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, и запустить скрипт.

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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Конечно смешно до анекдота но tcpdump"  +/
Сообщение от erera22 (ok) on 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";
}

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Конечно смешно до анекдота но tcpdump"  +/
Сообщение от Valerius (ok) on 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 исправить) поймал.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Конечно смешно до анекдота но tcpdump"  +/
Сообщение от erera22 (ok) on 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, ищите кто послал пакет.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру