Thread letzte IP Adresse zu Array von NetAddr::IP Objekten hinzufügen
(3 answers)
Opened by Roland at 2013-06-10 18:41
Ich habe letztens mit einem Kollegen Net::IP::AddrRanges und Net::CIDR::Lite entdeckt und schnell etwas zusammengeschrieben (Skript für Einmalzweck). Auf dieser Erfahrung aufbauend, ließe sich da auch sicher was schnell machen (sicher nicht optimal und verbesserungswürdig):
Code (perl): (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 #! /usr/bin/env perl use strict; use warnings; use Net::IP::AddrRanges; use Net::CIDR::Lite; our @ip = qw(10.144.128.0/18 10.144.192.0/19 10.144.224.0/20 10.144.240.0/21 10.144.248.0/22 10.144.252.0/23 10.144.254.0/24 10.144.255.0/25 10.144.255.128/26 10.144.255.192/27 10.144.255.224/28 10.144.255.240/29 10.144.255.248/30 10.144.255.252/31 10.144.255.254/32); my $ranges = Net::IP::AddrRanges->new(); $ranges->add(@ip); my @ranges = $ranges->list_ranges; if ( 1 == @ranges ) { # good, we only expected a single range if ( "254" eq substr( $ranges[0], -3, 3 ) ) { $ranges->add( substr( $ranges[0], 0, -3 ) . '255' ); } } my $cidr = Net::CIDR::Lite->new; $cidr->add_range( $_ ) for $ranges->list_ranges; print join "\n", $cidr->list(), ""; __END__ Result: 10.144.128.0/17 meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |