Schrift
[thread]10566[/thread]

Subnet Calculator

Leser: 1


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
Gast Gast
 2007-10-12 10:48
#100731 #100731
Hallo zusammen :)

ich habe mir versucht folgendes zusammen zu bauen:
Jedoch ohne erfolg. Vllt hat jemand eine gute Idee :)

Als beispiel:
Ich habe die IP
Start IP 10.10.10.0
Stop IP 10.10.20.0
snm 255.255.0.0
CIDR 255.255.255.252

jetzt ist es eigentlich ganz einfach was ich möchte.
Und zwar in eine textdatei die subnets schreiben das wie folgt aussieht
die ---- sollten vllt mit zur besseren ansicht ausgegeben werden.
---------------------------------------------------
10.10.10.0 255.255.0.0 255.255.255.252 0.0.0.3
10.10.10.1 255.255.0.0 255.255.255.252 0.0.0.3
10.10.10.2 255.255.0.0 255.255.255.252 0.0.0.3
10.10.10.3 255.255.0.0 255.255.255.252 0.0.0.3
---------------------------------------------------
10.10.10.4 255.255.0.0 255.255.255.252 0.0.0.3
10.10.10.5 255.255.0.0 255.255.255.252 0.0.0.3
10.10.10.6 255.255.0.0 255.255.255.252 0.0.0.3
10.10.10.7 255.255.0.0 255.255.255.252 0.0.0.3
--------------------------------------------------
10.10.10.8 255.255.0.0 255.255.255.252 0.0.0.3
10.10.10.9 255.255.0.0 255.255.255.252 0.0.0.3
10.10.10.10 255.255.0.0 255.255.255.252 0.0.0.3
10.10.10.11 255.255.0.0 255.255.255.252 0.0.0.3
--------------------------------------------------
10.10.10.12 255.255.0.0 255.255.255.252 0.0.0.3
10.10.10.13 255.255.0.0 255.255.255.252 0.0.0.3
....
....
....
10.10.19.251 255.255.0.0 255.255.255.252 0.0.0.3
---------------------------------------------------
10.10.19.252 255.255.0.0 255.255.255.252 0.0.0.3
10.10.19.253 255.255.0.0 255.255.255.252 0.0.0.3
10.10.19.254 255.255.0.0 255.255.255.252 0.0.0.3
10.10.19.255 255.255.0.0 255.255.255.252 0.0.0.3

Wenn ich jetzt
Start ip 10.10.0.0
Stop ip 10.10.0.0
snm 255.255.0.0
CIDR 255.255.255.252
dann sollte er mir alle in die Datei schreiben. und nicht nur wie vom obigen Beispiel von 10 bis 20

mfg
Michael
renee
 2007-10-12 11:03
#100733 #100733
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Gast+2007-10-12 08:48:39--

Wenn ich jetzt
Start ip 10.10.0.0
Stop ip 10.10.0.0
snm 255.255.0.0
CIDR 255.255.255.252
dann sollte er mir alle in die Datei schreiben. und nicht nur wie vom obigen Beispiel von 10 bis 20

mfg
Michael


Was heißt "alle"?
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/
renee
 2007-10-12 11:16
#100734 #100734
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
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
30
31
32
33
34
35
#!/usr/bin/perl

use strict;
use warnings;

my $start = '10.10.10.0';
my $stop  = '10.10.20.0';
my $snm   = '255.255.0.0';
my $cidr  = '255.255.255.252';
my $end   = '0.0.0.3';
my $group = 4;

my $group_counter = 0;

    my @first_ip  = split /\./, $start;
    my @second_ip = split /\./, $stop;
    
    while(1){
        last if join( ".", @first_ip ) eq $stop;
        $group_counter++;

        print sprintf "%s %s %s %s\n", join(".", @first_ip),$snm,$cidr,$end;
        $first_ip[-1]++;

        for( reverse 1..3 ){
          if( $first_ip[$_] == 256 ){
              $first_ip[$_-1] += 1;
              $first_ip[$_]    = 0;
          }
        }
        if( $group_counter == 4 ){
            print "-" x 40, "\n";
            $group_counter = 0 ;
        }
    }
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/
Gast Gast
 2007-10-12 11:17
#100735 #100735
naja also ich beschränke ja bei meinem 1. beispiel die ausgaben
von 10.10.10.0 bis 10.10.20.0

mit alle mein ich das er mir den kompletten adressbereich ausgibt
Start ip 10.10.0.0
stop ip 10.10.0.0
snm 255.255.0.0
CIDR 255.255.255.252
bei diesem beispiel wären es halt ca 16000 subnetze a 4 adressen
wovon halt 2 nutzbar sind. diese ausgabe wär halt sehr groß und deswegen
auch die (wichtige) sache mit startip und stop ip. Natürlich müsste das programm dann merken das es in diesem falle alles ausgeben soll.

z.b.
10.10.0.0
10.10.0.1
10.10.0.2
10.10.0.3
10.10.0.4
10.10.0.5
...
10.10.1.1
10.10.1.2
10.10.1.3
...
10.10.250.50
10.10.250.51
10.10.250.52
....
10.10.255.254
10.10.255.255

irgendwelche ideen?

mfg
Michael
renee
 2007-10-12 11:24
#100736 #100736
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/perl

use strict;
use warnings;

my $start = '10.10.0.0';
my $stop  = '10.10.0.0';
my $snm   = '255.255.0.0';
my $cidr  = '255.255.255.252';
my $end   = '0.0.0.3';
my $group = 4;

my $group_counter = 0;

if( $start eq $stop ){
    my @tmp   = split /\./, $stop;
    for( reverse 0..3 ){
        if( $tmp[$_] != 0 ){
            $tmp[$_]++;
            last;
        }
    }
    $stop = join ".", @tmp;
}

my @first_ip  = split /\./, $start;
my @second_ip = split /\./, $stop;
    
while(1){
    last if join( ".", @first_ip ) eq $stop;
    $group_counter++;

    print sprintf "%s %s %s %s\n", join(".", @first_ip),$snm,$cidr,$end;
    $first_ip[-1]++;

    for( reverse 1..3 ){
        if( $first_ip[$_] == 256 ){
            $first_ip[$_-1] += 1;
            $first_ip[$_]    = 0;
        }
    }
    
    if( $group_counter == 4 ){
        print "-" x 40, "\n";
        $group_counter = 0 ;
    }
}
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/
Gast Gast
 2007-10-12 11:33
#100737 #100737
wie kann ich dir ein
kasten bier zukommen lassen ;) :D
Gast Gast
 2007-10-12 11:50
#100740 #100740
hmm.. sieht auf jedenfall sau gut aus.
aber es scheint nicht für alles zu funktionieren.
Wenn ich zum beispiel:
my $start = '10.10.0.0';
my $stop = '10.10.128.0';
my $snm = '255.255.128.0';
my $cidr = '255.255.255.128';
my $end = '0.0.0.127';

nehme dann habe ich folgendes
-------------
10.10.0.0
10.10.0.1
10.10.0.2
10.10.0.3
...
10.10.0.127
------------
10.10.0.128
10.10.0.129
10.10.0.130
...
10.10.0.255
-------------
10.10.1.0
10.10.1.1
10.10.1.2
...
10.10.1.127
------------
...
------------
10.10.127.1
10.10.127.2
...
10.10.127.127
------------
10.10.127.128
10.10.127.129
....
10.10.127.255
------------

grüssle
Michael :)
renee
 2007-10-12 12:22
#100742 #100742
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Und was ist daran falsch??
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/
Gast Gast
 2007-10-12 12:48
#100744 #100744
die begrenzer ---- für die adressbereiche stimmen nicht
die sollten jetzt bei diesem fall nach

10.10.0.127 kommen
dann nach 10.10.0.255
dann nach 10.10.1.127

also alle 128 ausgaben wenn man so will
renee
 2007-10-12 13:09
#100745 #100745
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dann setz $group auf 128... und mach bei dem einen if ein if( $group_counter == $group )
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 >| >> 11 Einträge, 2 Seiten



View all threads created 2007-10-12 10:48.