Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
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!
  • 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
  • Outside of code tags, you may need to use entities for some characters:
            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?
    and the web crawler heard nothing...

    How do I use this? | Other CB clients
    Other Users?
    Others studying the Monastery: (9)
    As of 2014-09-30 22:22 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      How do you remember the number of days in each month?











      Results (385 votes), past polls