Thread letzte IP Adresse zu Array von NetAddr::IP Objekten hinzufügen (3 answers)
Opened by Roland at 2013-06-10 18:41

Linuxer
 2013-06-10 19:15
#168083 #168083
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Ich habe letztens mit einem Kollegen CPAN:Net::IP::AddrRanges und CPAN: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!

View full thread letzte IP Adresse zu Array von NetAddr::IP Objekten hinzufügen