Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Comment on

( #3333=superdoc: print w/replies, xml ) Need Help??

I whipped this up today to solve a problem that I deal with all the time. We have hundreds if not thousands of IP addresses on our network along with a very dynamic data center. What I mean by dynamic is hosts are always being added and with others being removed.

So the system guys come to me all the time and ask me for one or more IP addresses on a given network. My group manages DNS and IP addresses (as opposed to the network team for some reason) and for some reason they like to come to me in particular for those requests.

The normal process calls for combing through the DNS zone files and looking for a hole in the address range that isn't being used. Enough of that.. computers work for me not the other way around!

Here's what I came up with:

#!/usr/bin/perl -w $|=1; use strict; use Net::Ping; use Net::Netmask; use Net::DNS; use Getopt::Long; my @blocks=(); my $outfile=""; my $dns = Net::DNS::Resolver -> new; my $res = GetOptions("net=s",\@blocks, "out=s",\$outfile ); $outfile="candidates.txt" unless $outfile; @blocks=split(",",join(",",@blocks)); foreach my $i(0..$#blocks){ unless ($blocks[$i] =~ m@^\d+\.\d+\.\d+\.\d+/\d+$@){ $blocks[$i] = $blocks[$i] . "/24"; } } open FOUT,sprintf("> %s",$outfile) or die "$outfile: $!"; my $p = Net::Ping->new(); foreach my $block(@blocks){ my $net = Net::Netmask->new($block); foreach my $ip($net->enumerate()){ next if $ip =~ m@\.0$@; next if $dns->search($ip); printf "%s\r",$ip; unless ($p->ping($ip,1)){ printf FOUT "%s\n",$ip; } } }
Now there is great room for improvement in this script, but I'll leave it to the gentle reader as an intellectual excersize.


Peter L. Berghold -- Unix Professional
Peter -at- Berghold -dot- Net; AOL IM redcowdawg Yahoo IM: blue_cowdawg

In reply to Find an IP within a live nework by blue_cowdawg

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?
    Username:
    Password:

    What's my password?
    Create A New User
    Chatterbox?
    [LanX]: click!
    [choroba]: they
    [LanX]: why do you think it's more than one person?
    [Your Mother]: Because we are LEGION! Fix YOUR SIG SIG BLOCK!!!!
    [Your Mother]: Forgot to sign in as my sockpuppet, how embarrassing!
    [1nickt]: pryrt I am creating a Type to check valid user IDs, which must be a whole number greater than or equal to zero. I would like to disallow 1.0 but because of this behaviour, by the time it is checked by the constraint, it *is* an Int.
    [LanX]: should this be considered? Re: Parsing .txt into arrays
    [LanX]: and this Re^4: Hash user input
    [pryrt]: LanX, I would vote "keep" if it were considered: it's not helpful, but it could be taken multiple ways, not all of which are offenseive...
    [pryrt]: 1nickt: if you are checking for valid user IDs, then I wouldn't care about the difference between 1.0 and 1: I would take either as a valid representation of the integer user ID#1

    How do I use this? | Other CB clients
    Other Users?
    Others meditating upon the Monastery: (14)
    As of 2017-05-24 20:14 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?