Schrift
[thread]12707[/thread]

Netmask "Pretty Printer"

Leser: 1


<< >> 4 Einträge, 1 Seite
roli
 2008-11-02 14:11
#115895 #115895
User since
2004-12-31
424 Artikel
BenutzerIn
[default_avatar]
Hi Leute,

ich experimentiere gerade mit den Netzwerk Modulen Net::Pcap, NetPacket::IP und NetPacket::Ethernet. Dabei bin auf folgendes Beispiel gestoßen:
Code: (dl )
1
2
3
4
5
my ($address, $netmask, $err);
if (Net::Pcap::lookupnet($dev, \$address, \$netmask, \$err)) {
die 'Unable to look up device information for ', $dev, ' - ', $err;
}
print STDOUT "$dev: addr/mask -> $addr/$mask\n";

Das Ergebnis hier ist
Code: (dl )
eth0: addr/mask -> 3232235776/4294967040

Was leider nicht so ganz das ist, was ich gerne hätte. Als Adresse würde ich gerne folgenden String sehen: 192.168.1.11, als Netzwerkmaske 255.255.255.0.
Leider sind hier mal wieder meine bescheidenen Fähigkeiten überfordert, und die Suchmaschine meines Vertrauens bringt mich auch nicht weiter. Ich hoffe das ihr mir helfen könnt.

Danke, schönen Sonntag noch, ...
Roland
--
"Steh vorn, während du fragst;
sitzen soll, wer antwortet."
Aus "Die Edda des Snorri Sturluson" "Gylfis Täuschung" Strophe 2
Ronnie
 2008-11-02 14:55
#115896 #115896
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Wahrscheinlich geht das auch eleganter, aber so geht es auch:
Code (perl): (dl )
1
2
3
4
5
6
use Data::Dumper;

my $ip      = join '.', map hex, (sprintf("%x", 3232235776) =~ /\w{2}/g);
my $mask    = join '.', map hex, (sprintf("%x", 4294967040) =~ /\w{2}/g);

print Dumper [$ip, $mask]
roli
 2008-11-02 15:25
#115897 #115897
User since
2004-12-31
424 Artikel
BenutzerIn
[default_avatar]
Hi Ronnie,

Ob's auch eleganter geht kann ich nicht beurteilen, deine Lösung funtioniert jedenfalls im Gegensatz zu allem was ich so probiert habe.

Vielen Dank
Roland
--
"Steh vorn, während du fragst;
sitzen soll, wer antwortet."
Aus "Die Edda des Snorri Sturluson" "Gylfis Täuschung" Strophe 2
Gast Gast
 2008-11-02 16:20
#115901 #115901
Ich denke mal, das das etwas eleganter ist:
Code (perl): (dl )
1
2
3
4
5
6
use Data::Dumper;

my $ip      = join '.', unpack "C*", pack "N", 3232235776;
my $mask    = join '.', unpack "C*", pack "N", 4294967040;

print Dumper [$ip, $mask]
<< >> 4 Einträge, 1 Seite



View all threads created 2008-11-02 14:11.