The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Perl - сетевое программирование"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Perl - сетевое программирование"  
Сообщение от Dmitriy (??) on 08-Июл-06, 16:25 
Всем здравствуйте,

возникла необходимость в соственном UDP сервере, взял из кукин бук, сервер слушает 162 UDP порт, и должен писать логи анализируя приходящие пакеты. Т.е. внутри работает regexp на определённое сообщение - если оно приходит то должно записаться в лог всё остальное игнорируется. Соответственно решил проверить сработает ли. Накропал скрипт который по 162 UDP порту (с другой машины) шлёт нужный пакет каждые 10 сек. Сервер пакеты получает но лог не пишет, видимо сообщение под шаблон не подходит. Посмотрел что приходит на 162 порт tcpdump`ом пакеты приходят но содержимого не видно. Ниже скрипт UDP сервера и скрипта который шлёт на него пакеты. Помогите пожалуйста разобраться почему не видно содержимого получаемых пакетов? И почему отсылаемые сообщения могут не подходить под шаблон?
Само сообщение состоит из трёх строк:

1. Then, go into a loop receiving messages:
2. 2006-06-23 13:14:29 0.0.0.0(via 192.168.10.180) TRAP, SNMP v1, community trap
далее всё 3-я строка
3. SNMPv2-SMI::enterprises.303.3.3.19.8.4 Enterprise Specific Trap (8) Uptime: 0:00:00.00
SNMPv2-SMI::enterprises.303.3.3.19.8.1.1 = STRING: "55BJ0005" SNMPv2-SMI::enterprises.303.3.3.19.8.1.2 = STRING: "default
SNMPv2-SMI::enterprises.303.3.3.19.8.1.3 = STRING: "10.1.3.162" SNMPv2-SMI::enterprises.303.3.3.19.8.1.8 = INTEGER: 5

сервер:
------------------------------------------------------------------------------------------
use strict;
use IO::Socket;

my $server_port="162";
my $dlina="1024";
my $server = IO::Socket::INET->new(LocalPort => $server_port,
                                Proto     => "udp") or die "Couldn't be a udp server on port $server_port : $@\n";

my ($date,$time,$type,$vsat,$profile,$ip,$stime,$him,$datagram);
while ($him = $server->recv($datagram, $dlina))
    {
    if ($him=~/(\d{4}\-\d{2}\-\d{2})\s(\S{8})\s.+\n.+\sTrap\s\(([8]{1})\)\sUptime.+\n.+\sSTRING\:\s\"(\S+)\".+STRING\:\s
    \"(\w+)\"\.+STRING\:\s\"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\".+\sINTEGER\:\s(\d+)/g)
        {
        $date=$1;$time=$2;$type=$3;$vsat=$4;$profile=$5;$ip=$6;$stime=$7;
        open(F,">testing.txt");
        print F $date," ",$time," ",$type," ",$vsat," ",$profile," ",$ip," ",$stime," ","VSTAT is UP","\n";
        close F;
        }  
------------------------------------------------------------------------------------------

скрипт для отправки сообщений на 162 порт
------------------------------------------------------------------------------------------

use Socket;

socket(SockHandle, PF_INET, SOCK_DGRAM, getprotobyname("udp"));
$HOSTNAME="local.altegrosky.lan";
$ipaddr="192.168.254.9";
$PORTNO="162";
$MSG="2006-06-23 13:14:29 0.0.0.0(via 172.16.11.161) TRAP, SNMP v1, community trap\nSNMPv2-SMI::enterprises.303.3.3.19.8.4
Enterprise Specific Trap (8) Uptime: 0:00:00.00\nSNMPv2-SMI::enterprises.303.3.3.19.8.1.1 = STRING: '55BJ0005' SNMPv2-SMI::enterprises.303.3.3.19.8.1.2 = STRING: 'default' SNMPv2-SMI::enterprises.303.3.3.19.8.1.3 = STRING: '10.1.3.162' SNMPv2-SMI::enterprises.303.3.3.19.8.1.8 = INTEGER: 5";

$ipaddr=inet_aton($HOSTNAME);
$portaddr=sockaddr_in($PORTNO, $ipaddr);
while (1) {
send(SockHandle,$MSG,0, $portaddr)==length($MSG) or die "cannot send to $ipaddr: $!";
sleep 10;}
-----------------------------------------------------------------------------------------

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

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


1. "Perl - сетевое программирование"  
Сообщение от NuINu (ok) on 13-Июл-06, 16:51 
>Всем здравствуйте,
И тебе не болеть ;-))

спасибо что привел код, я его скопировал и у себя посмотрел. Окзалось, нужно анализировать
$datagram а не $him

Ну а выраженьице свое, сам уж как нибудь, по чястям анализуруй ;-)))

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "Perl - сетевое программирование"  
Сообщение от Dmitriy (??) on 17-Июл-06, 16:07 
>>Всем здравствуйте,
>И тебе не болеть ;-))
>
>спасибо что привел код, я его скопировал и у себя посмотрел. Окзалось,
>нужно анализировать
>$datagram а не $him
>
>Ну а выраженьице свое, сам уж как нибудь, по чястям анализуруй ;-)))
>

Спасибо, но как то до анализа пакета дело не доходит пока из-за того что я содержимое пакета не вижу. Т.е. скрипт конечно шлёт пакеты но похоже что не с тем содержанием. Соответственно сервер их игнорирует.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "Perl - сетевое программирование"  
Сообщение от NuINu (ok) on 17-Июл-06, 17:36 
>>>Всем здравствуйте,
>>И тебе не болеть ;-))
>>
>>спасибо что привел код, я его скопировал и у себя посмотрел. Окзалось,
>>нужно анализировать
>>$datagram а не $him
>>
>>Ну а выраженьице свое, сам уж как нибудь, по чястям анализуруй ;-)))
>>
>
>Спасибо, но как то до анализа пакета дело не доходит пока из-за
>того что я содержимое пакета не вижу. Т.е. скрипт конечно шлёт
>пакеты но похоже что не с тем содержанием. Соответственно сервер их
>игнорирует.

;-)) так ты их выведи на консольто ;-))) или в файл на крайняк, еще до собственно обраотки фильтром.

смею тебя уверить шлет он все нормально ;-)))

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "Perl - сетевое программирование"  
Сообщение от Dmitriy (??) on 17-Июл-06, 17:51 
>>>>Всем здравствуйте,
>>>И тебе не болеть ;-))
>>>
>>>спасибо что привел код, я его скопировал и у себя посмотрел. Окзалось,
>>>нужно анализировать
>>>$datagram а не $him
>>>
>>>Ну а выраженьице свое, сам уж как нибудь, по чястям анализуруй ;-)))
>>>
>>
>>Спасибо, но как то до анализа пакета дело не доходит пока из-за
>>того что я содержимое пакета не вижу. Т.е. скрипт конечно шлёт
>>пакеты но похоже что не с тем содержанием. Соответственно сервер их
>>игнорирует.
>
>;-)) так ты их выведи на консольто ;-))) или в файл на
>крайняк, еще до собственно обраотки фильтром.
>
>смею тебя уверить шлет он все нормально ;-)))

Действительно пакеты правильные присылает, только перенос строки добавляет :) буду дальше ковырять
Большое человеческое спасибо!


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

5. "Perl - сетевое программирование"  
Сообщение от uldus (ok) on 26-Июл-06, 22:51 
Для создания сетевых сереверов на Perl рекомендую использовать модуль Net::Server
(http://search.cpan.org/~rhandom/Net-Server-0.94/), особенно если придется под большой нагрузкой его использовать.
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

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

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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