Perl script to allocate next available IP from a range


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Perl script to allocate next available IP from a range
# 1  
Old 01-12-2016
Perl script to allocate next available IP from a range

Hi

I am looking to automate the process in PERL of allocating IP addresses from a set range of addresses (for example a /22 network 10.10.224.1 - 10.10.227.254)

I am able to query the IP addresses that are already in use in the above range, which will produce me a list like this for example

Code:
10.10.224.1
10.10.224.2
10.10.224.3
10.10.225.23
10.10.225.35
10.10.227.67
...
...

What I am trying to do is find a way of taking that list and determining the next available IP address for use within the boundaries of the netmask (so for example between 10.10.224.1 and 10.10.227.254) Naturally if this was just a standard list of numbers then it would be straightforward, but given they are IP addresses, its a bit more complex


does anyone know a good starting point for this or have any experience of setting up something similar?

Cheers
# 2  
Old 01-12-2016
How do you supply the netmask? What be the desired output from above (10.10.224.4 or 10.10.227.68)?
# 3  
Old 01-12-2016
Hi RudiC, at the moment I am starting from scratch. I will probably define the network I want to allocate against within the script, or maybe pass it in as an argument... either way, lets assume I have a 10.10.224.0/22 network (as an example) ... within the script I can already populate an array with the 'used' IP's in that range ... but my challenge is to find away of evaluating the ones that arent in use (free to use) within that range.


Sorry, but im not sure I understand the 2nd part of your question with those IPs you have given
# 4  
Old 01-12-2016
If you got bash, copy this
Code:
while read LINE
  do    IP=$((0x$(printf "%02X" ${LINE//./ })));
        if (( INITDONE == 0 ))
          then  NETMASK=$(( (2**32-1)-(2**(32-$2)-1) ));
                ORG=$((IP & NETMASK));
                NXTSUB=$(( ORG + 2**(32-$2) ))
                INITDONE=1
          fi
        if (( IP != ${NXTIP:-$IP} ))
          then  printf "next free IP: %d.%d.%d.%d\n" $((NXTIP>>24)) $((NXTIP>>16&255)) $((NXTIP>>8&255)) $((NXTIP&255))
                break
          fi
        NXTIP=$(( ++IP ))
        if (( NXTIP >= NXTSUB ))
          then  printf "no free IP in subnet\n"
                break
          fi    
  done < $1

into a script file, make it executable and run it like
Code:
./script IPfile 22

with IPfile containig your above example.
This User Gave Thanks to RudiC For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to put date range from a perl & sql script

Hi Guys, Can someone please help me on adding/inserting a variable date to an sql scipt? Basically I want to assign a 7 days date range. As shown below.. #!/usr/bin/perl use strict; use Env qw(ORACLE_HOME); my $SQLPLUS='/opt/oracle/product/10.1.0/db_1/bin/sqlplus -S... (1 Reply)
Discussion started by: pinpe
1 Replies

2. Shell Programming and Scripting

Perl - quick inverse of a number range

Hello, I'm trying to find an nice solution for the following: 1) I have ranges of numbers (begin-end): 10-15, 20-30, 45-50 2) I have begin limit=0 and end limit=60. 3) I need to find out number ranges between begin limit and end limit that do not overlap with the ranges in item1. In this... (6 Replies)
Discussion started by: pn8830
6 Replies

3. Programming

Perl : Numeric Range Pattern Matching

hi Experts just wondering if you can help me check a number between a specific range if i have an ip address , how can i say the valid number for ip between 1 to 254 something like this if ($ip ) =~ /.../ { } what the pattern i need to type thanks (3 Replies)
Discussion started by: doubando
3 Replies

4. Programming

Mod Perl 2 with byte range help

I am writing a mod perl 2 download module and I am facing the same issue as this guy. mp2 / Apache byterange filter | ModPerl | ModPerl If I remove the check for EOS in byterange_filter.c and recompile Apache2, the byte range filter is executed and the result is correct but I am not sure that... (0 Replies)
Discussion started by: metalbone
0 Replies

5. Shell Programming and Scripting

time stamp perl script error out of range 1..31

Hi, while running the perl script i am getting this error message , Day '' out of range 1..31 at rsty.sh line 44 what do iam missing in the script, any suggestion #!/usr/bin/perl use Time::Local; my $wday = $ARGV; my $month = $ARGV; # convert the month shortname into 0-11 number if... (4 Replies)
Discussion started by: saha
4 Replies

6. Shell Programming and Scripting

allocate user quota using perl script

Hi I'm a student who is studying system administration. I need to write a perl script to allocate disk quota to users. I'm using ubuntu and When I try to run edquota command in command line it says that Can't find file system with quota. pls help me. I tried to edit fstab. but didn't work. ... (1 Reply)
Discussion started by: piumali
1 Replies

7. Shell Programming and Scripting

Perl search and replace in range using variable

Hi. I have a file with asterisk field separators and backslash line terminators. The first field in each line names the line type. I am trying to process each range separately. Here's what the data looks like: BA*DATA\ LS*DATA1*DATA2*00020*\ TA*DATA1*DATA2*DATA3*\ TA*DATA1*DATA2*DATA3*\... (1 Reply)
Discussion started by: yoi2hot4ya
1 Replies

8. UNIX for Advanced & Expert Users

Allocate memory for a shell script in Aix at runtime-urgent critical

How to allocate memory for a shell script on aix box at the time of execution i.e at runtime Are there any commands for AIX in specific Thanks in Advance (1 Reply)
Discussion started by: aixjadoo
1 Replies

9. UNIX for Dummies Questions & Answers

allocate memory for a shell script at runtime--urgent critical help!!!

How to allocate memory for a shell script on aix box at the time of execution i.e at runtime Are there any commands for AIX in specific Thanks in Advance (3 Replies)
Discussion started by: aixjadoo
3 Replies

10. AIX

allocate memory for shell script at runtime during execution--urgent critical help!!

How to allocate memory for a shell script on aix box at the time of execution i.e at runtime Are there any commands for AIX in specific Thanks in Advance (1 Reply)
Discussion started by: aixjadoo
1 Replies
Login or Register to Ask a Question