Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]4408[/thread]

Auf Port 514 lauschen: Ein Anfänger auf Holzwegen...



<< |< 1 2 >| >> 16 Einträge, 2 Seiten
smallish
 2006-02-21 20:18
#37129 #37129
User since
2005-10-13
28 Artikel
BenutzerIn
[default_avatar]
Hallo,
Ich begreife nicht wie ich das ankommende Systemprotokoll (UDP, Port 514) mittels Perl auffangen und verarbeiten kann.

Ich habs mit IO::Socket::INET versucht aber irgendwie will es nicht klappen.

Die Packete kommen auf jedenfall an, denn mit Ethereal kann ich sie abfangen.

Hat mir jemand einen Tipp wie ich es anfangen könnte oder wo ich nachschauen kann wie es funktioniert?

Ich habs bisher so probiert:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
use strict;
use warnings;
use IO::Socket::INET;

my $socket = IO::Socket::INET -> new( LocalPort => 514,
Type => SOCK_STREAM)
or die "Keine Verbindung: $!\n";

my $hello = <$socket>;
print $hello;

close($socket);

aber ich habe keine Ahnung ob ich auch nur ein bisschen auf dem richtigen Weg bin oder völlig falsch...

Danke für eure Antworten
smallish
cbxk1xg
 2006-02-21 20:31
#37130 #37130
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Nach einem kurzen Blick in die Doku von IO::Socket::INET, würde ich sagen, es ist der Protokolltyp. Es gibt einen Parameter namens Proto. Ist dieser nicht angeben, wird automatisch TCP angenommen, wenn das Protokoll nicht über Service Namen bestimmt werden kann.

Doku auf CPAN
Quote
If Proto is not given and you specify a symbolic PeerPort port, then the constructor will try to derive Proto from the service name. As a last resort Proto "tcp" is assumed. The Type parameter will be deduced from Proto if not specified.
\n\n

<!--EDIT|cbxk1xg|1140546760-->
smallish
 2006-02-21 20:42
#37131 #37131
User since
2005-10-13
28 Artikel
BenutzerIn
[default_avatar]
Danke, habs jetzt so versucht:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use strict;
use warnings;
use IO::Socket::INET;

my $socket = IO::Socket::INET -> new( LocalPort => 514,
Type => SOCK_STREAM,
Proto => 'udp')
or die "Keine Verbindung: $!\n";

my $hello;
until (defined $hello) {
$hello = <$socket>
}

print $hello;

close($socket);

Output:
Code: (dl )
Keine Verbindung: 


funktioniert troztdem nicht...\n\n

<!--EDIT|smallish|1140547505-->
esskar
 2006-02-21 20:52
#37132 #37132
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
mach mal das SOCK_STREAM weg.
Ist ja ecklig!
smallish
 2006-02-21 21:01
#37133 #37133
User since
2005-10-13
28 Artikel
BenutzerIn
[default_avatar]
Tschuldigung! :)
Ich begreif es einfach nicht... Ich wollte nur kurz mir ein kleines Progrämmchen zusammenbasteln um die gesendeten Daten auf zu
fangen aber es geht einfach nicht...
Ich krieg zwar jetzt eine Verbindung aber immer noch keine Daten...

Vielleicht hilft das ja weiter: (von Ethereal)
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
No.     Time        Source                Destination           Protocol Info
1 0.000000 192.168.2.1 192.168.2.101 Syslog LOCAL0.DEBUG: gigaset WA6005A[385]:**RIP P...

Frame 1 (138 bytes on wire, 138 bytes captured)
Arrival Time: Feb 21, 2006 19:57:22.638801000
Time delta from previous packet: 0.000000000 seconds
Time since reference or first frame: 0.000000000 seconds
Frame Number: 1
Packet Length: 138 bytes
Capture Length: 138 bytes
Protocols in frame: eth:ip:udp:syslog
Ethernet II, Src: 192.168.2.1 , Dst: 192.168.2.101
Destination: 192.168.2.101
Source: 192.168.2.1
Type: IP (0x0800)
Internet Protocol, Src: 192.168.2.1 (192.168.2.1), Dst: 192.168.2.101 (192.168.2.101)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
Total Length: 124
Identification: 0x38b9 (14521)
Flags: 0x00
Fragment offset: 0
Time to live: 64
Protocol: UDP (0x11)
Header checksum: 0xbc01 [correct]
Source: 192.168.2.1 (192.168.2.1)
Destination: 192.168.2.101 (192.168.2.101)
User Datagram Protocol, Src Port: syslog (514), Dst Port: syslog (514)
Source port: syslog (514)
Destination port: syslog (514)
Length: 104
Checksum: 0x0744 [correct]
Syslog message: LOCAL0.DEBUG: gigaset WA6005A[385]:**RIP P...
1000 0... = Facility: LOCAL0 - reserved for local use (16)
.... .111 = Level: DEBUG - debug-level messages (7)
Message: gigaset WA6005A[385]:**RIP Packet** 192.168.1.1, 520->> 192.168.1.7, 520 (from WAN Inbound)
\n\n

<!--EDIT|smallish|1140548784-->
nepos
 2006-02-21 21:02
#37134 #37134
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Du machst das auch als root oder? Denn 514 ist einer der privilegierten Ports, an den darf man sich als normaler User nicht binden.
smallish
 2006-02-21 21:12
#37135 #37135
User since
2005-10-13
28 Artikel
BenutzerIn
[default_avatar]
Gilt das auch für Windows XP? Wieso kann dann Ethereal die Daten abfangen und ich schaffs einfach nicht?
nepos
 2006-02-21 21:15
#37136 #37136
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Uff, sorry, unter Windows hab ich keine Ahnung. Ethereal nutzt aber eine spezielle Schnittstelle (PCAP oder so aehnlich), mittels der es die Pakete mitschneiden kann. Aber ich kann mir auch unter Windows vorstellen, dass nicht jeder x-beliebige User einen der privilegierten Ports aufmachen kann.
betterworld
 2006-02-22 05:45
#37137 #37137
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Wenn Du unter Windows arbeitest, gib mal neben $! auch noch $^E aus. Da steht oft hilfreiches Zeug drin.

[quote=esskar,21.02.2006, 19:52]Ist ja ecklig![/quote]
So wie "Packete" auch ;-)

Aber ansonsten hat esskar recht: Das mit dem "Type" solltest Du einfach ganz weglassen. Dann muesste es gehen.
Uebrigens ist "Keine Verbindung" nicht gerade eine optimal gewaehlte Fehlermeldung, denn Dein Code will ja eigentlich keine Verbindung aufbauen\n\n

<!--EDIT|betterworld|1140580087-->
renee
 2006-02-22 06:06
#37138 #37138
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Also ohne den Type scheint es bei mir zu laufen (WinXP)...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2006-02-21 20:18.