How to change ip addressing format from CIDR notation to netmask and vice versa?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to change ip addressing format from CIDR notation to netmask and vice versa?
Prev   Next
# 1  
Old 12-04-2014
How to change ip addressing format from CIDR notation to netmask and vice versa?

Hi all, I would appreciate if someone could share how to convert CIDR notation to netmask and vice versa.
The value below is just an example. it could be different numbers/ip addresses.

Initial Output, let say file1.txt
Quote:
10.0.0.0/8
172.16.1.0/16
192.168.1.0/24
Final Output, let say file2.txt
Quote:
10.0.0.0 255.0.0.0
172.16.1.0 255.255.0.0
192.168.1.0 255.255.255.0
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Command for Host Name to IP Address or Vice Versa

Hi, In unix or linux is there any command exist to identify Host Name to IP Address or Vice Versa? Thanks in advance (6 Replies)
Discussion started by: nag_sathi
6 Replies

2. UNIX for Dummies Questions & Answers

How to ping from Windows to Solaris 10 and vice versa?

Hi all, I installed Oracle virtual box 4.1.8 on my desktop. I installed Windows 2008 server R2 as one instance and Solaris 10 as another instance. When am trying to ping from Windows to solaris and vice-versa, ping not working. windows IP : 10.1.47.24 Solaris IP : 10.1.47.25 netstat... (2 Replies)
Discussion started by: kjks
2 Replies

3. Shell Programming and Scripting

Converting from Centigrade to Fahrenheit and vice versa.

I need to write a script that will take the input from a file and convert the number from centigrade to fahrenheit and vice versa. This is what I have but it doesn't seem to be correct. Also the data file has 11 numbers inside of it and the output needs to be listed as so: Fahrenheit Temperature... (18 Replies)
Discussion started by: N1ckNak
18 Replies

4. UNIX for Dummies Questions & Answers

Problem with scp from one server to the other (but not vice versa)

Hi I have a system PRIMARY where I can push or pull files to/from STANDBY using scp. I can also ssh without entering a password. On the STANDBY system if I try and use scp or ssh it asks for a password. I checked in ~/.ssh and there was no authorized_keys file on the PRIMARY server. After... (2 Replies)
Discussion started by: mrrossi
2 Replies

5. Ubuntu

What is the advantage of ubuntu over vista and vice versa?

i am thinking of replacing my vista with ubuntu. Questions: 1) what will be the advantages and disadvantages of using ubuntu instead of vista? 2) what will be the setbacks of replacing my vista? 3) how hard is it to cope up with the new OS? what must i learn to utilize ubuntu? (1 Reply)
Discussion started by: Anna Hussie
1 Replies

6. Shell Programming and Scripting

Uppercase to lowercase and vice versa

shell script to convert file names from UPPERCASE to lowercase file names or vice versa in linux anybody please help me out!!!! (5 Replies)
Discussion started by: jacky29
5 Replies

7. UNIX for Dummies Questions & Answers

Appending from a file to a script and vice versa

Hi, I am new to Unix and discovered this example problem online that I believe will help my learning: Run the command's below env >> xx env >> xx env >> xx env >> xx env >> xx You will now have a file called XX with the env redirected into it 5 times Create a script named... (2 Replies)
Discussion started by: Jimmy_c
2 Replies

8. Shell Programming and Scripting

Pdf to text conversion and vice versa

Hi, I have a pdf file. i want to convert it to text file and do some work on it and later want to convert it back to pdf. Can this be done via unix? or Is there a way unix can directly work on PDF file? (2 Replies)
Discussion started by: saltysumi
2 Replies

9. Shell Programming and Scripting

sed help to convert from lowercase to uppercase and vice versa!

Hello, can sed be used to convert all letters of a file from uppercase to lowercase and vice versa?i know tr command can be used but with sed is it possible? i came up with this :- sed 'y///' file1 actually the above command is also not working! Please help me. Thanks in advance :) (6 Replies)
Discussion started by: salman4u
6 Replies

10. Programming

binary to string conversion and vice versa

please let me know that in unix using c programming language we can do binary to string conversion and vice versa using ltoa and atol but how can we do it in c++ programming language. thank you in advance. (3 Replies)
Discussion started by: kinnaree
3 Replies
Login or Register to Ask a Question
CIDR(3pm)						User Contributed Perl Documentation						 CIDR(3pm)

NAME
Net::CIDR - Manipulate IPv4/IPv6 netblocks in CIDR notation SYNOPSIS
use Net::CIDR; use Net::CIDR ':all'; print join(" ", Net::CIDR::range2cidr("192.68.0.0-192.68.255.255", "10.0.0.0-10.3.255.255")) . " "; # # Output from above: # # 192.68.0.0/16 # 10.0.0.0/14 print join(" ", Net::CIDR::range2cidr( "dead:beef::-dead:beef:ffff:ffff:ffff:ffff:ffff:ffff")) . " "; # # Output from above: # # dead:beef::/32 print join(" ", Net::CIDR::range2cidr("192.68.1.0-192.68.2.255")) . " "; # # Output from above: # # 192.68.1.0/24 # 192.68.2.0/24 print join(" ", Net::CIDR::cidr2range("192.68.0.0/16")) . " "; # # Output from above: # # 192.68.0.0-192.68.255.255 print join(" ", Net::CIDR::cidr2range("dead::beef::/46")) . " "; # # Output from above: # # dead:beef::-dead:beef:3:ffff:ffff:ffff:ffff:ffff @list=("192.68.0.0/24"); @list=Net::CIDR::cidradd("192.68.1.0-192.68.1.255", @list); print join(" ", @list) . " "; # # Output from above: # # 192.68.0.0/23 print join(" ", Net::CIDR::cidr2octets("192.68.0.0/22")) . " "; # # Output from above: # # 192.68.0 # 192.68.1 # 192.68.2 # 192.68.3 print join(" ", Net::CIDR::cidr2octets("dead::beef::/46")) . " "; # # Output from above: # # dead:beef:0000 # dead:beef:0001 # dead:beef:0002 # dead:beef:0003 @list=("192.68.0.0/24"); print Net::CIDR::cidrlookup("192.68.0.12", @list); # # Output from above: # # 1 @list = Net::CIDR::addr2cidr("192.68.0.31"); print join(" ", @list); # # Output from above: # # 192.68.0.31/32 # 192.68.0.30/31 # 192.68.0.28/30 # 192.68.0.24/29 # 192.68.0.16/28 # 192.68.0.0/27 # 192.68.0.0/26 # 192.68.0.0/25 # 192.68.0.0/24 # 192.68.0.0/23 # [and so on] print Net::CIDR::addrandmask2cidr("195.149.50.61", "255.255.255.248")." "; # # Output from above: # # 195.149.50.56/29 DESCRIPTION
The Net::CIDR package contains functions that manipulate lists of IP netblocks expressed in CIDR notation. The Net::CIDR functions handle both IPv4 and IPv6 addresses. @cidr_list=Net::CIDR::range2cidr(@range_list); Each element in the @range_list is a string "start-finish", where "start" is the first IP address and "finish" is the last IP address. range2cidr() converts each range into an equivalent CIDR netblock. It returns a list of netblocks except in the case where it is given only one parameter and is called in scalar context. For example: @a=Net::CIDR::range2cidr("192.68.0.0-192.68.255.255"); The result is a one-element array, with $a[0] being "192.68.0.0/16". range2cidr() processes each "start-finish" element in @range_list separately. But if invoked like so: $a=Net::CIDR::range2cidr("192.68.0.0-192.68.255.255"); The result is a scalar "192.68.0.0/16". Where each element cannot be expressed as a single CIDR netblock range2cidr() will generate as many CIDR netblocks as are necessary to cover the full range of IP addresses. Example: @a=Net::CIDR::range2cidr("192.68.1.0-192.68.2.255"); The result is a two element array: ("192.68.1.0/24","192.68.2.0/24"); @a=Net::CIDR::range2cidr( "d08c:43::-d08c:43:ffff:ffff:ffff:ffff:ffff:ffff"); The result is an one element array: ("d08c:43::/32") that reflects this IPv6 netblock in CIDR notation. range2cidr() does not merge adjacent or overlapping netblocks in @range_list. @range_list=Net::CIDR::cidr2range(@cidr_list); The cidr2range() functions converts a netblock list in CIDR notation to a list of "start-finish" IP address ranges: @a=Net::CIDR::cidr2range("10.0.0.0/14", "192.68.0.0/24"); The result is a two-element array: ("10.0.0.0-10.3.255.255", "192.68.0.0-192.68.0.255"). @a=Net::CIDR::cidr2range("d08c:43::/32"); The result is a one-element array: ("d08c:43::-d08c:43:ffff:ffff:ffff:ffff:ffff:ffff"). cidr2range() does not merge adjacent or overlapping netblocks in @cidr_list. @netblock_list = Net::CIDR::addr2cidr($address); The addr2cidr function takes an IP address and returns a list of all the CIDR netblocks it might belong to: @a=Net::CIDR::addr2cidr('192.68.0.31'); The result is a thirtythree-element array: ('192.68.0.31/32', '192.68.0.30/31', '192.68.0.28/30', '192.68.0.24/29', [and so on]) consisting of all the possible subnets containing this address from 0.0.0.0/0 to address/32. Any addresses supplied to addr2cidr after the first will be ignored. It works similarly for IPv6 addresses, returning a list of one hundred and twenty nine elements. $cidr=Net::CIDR::addrandmask2cidr($address, $netmask); The addrandmask2cidr function takes an IP address and a netmask, and returns the CIDR range whose size fits the netmask and which contains the address. It is an error to supply one parameter in IPv4-ish format and the other in IPv6-ish format, and it is an error to supply a netmask which does not consist solely of 1 bits followed by 0 bits. For example, '255.255.248.192' is an invalid netmask, as is '255.255.255.32' because both contain 0 bits in between 1 bits. Technically speaking both of those *are* valid netmasks, but a) you'd have to be insane to use them, and b) there's no corresponding CIDR range. @octet_list=Net::CIDR::cidr2octets(@cidr_list); cidr2octets() takes @cidr_list and returns a list of leading octets representing those netblocks. Example: @octet_list=Net::CIDR::cidr2octets("10.0.0.0/14", "192.68.0.0/24"); The result is the following five-element array: ("10.0", "10.1", "10.2", "10.3", "192.68.0"). For IPv6 addresses, the hexadecimal words in the resulting list are zero-padded: @octet_list=Net::CIDR::cidr2octets("::dead:beef:0:0/110"); The result is a four-element array: ("0000:0000:0000:0000:dead:beef:0000", "0000:0000:0000:0000:dead:beef:0001", "0000:0000:0000:0000:dead:beef:0002", "0000:0000:0000:0000:dead:beef:0003"). Prefixes of IPv6 CIDR blocks should be even multiples of 16 bits, otherwise they can potentially expand out to a 32,768-element array, each! @cidr_list=Net::CIDR::cidradd($block, @cidr_list); The cidradd() functions allows a CIDR list to be built one CIDR netblock at a time, merging adjacent and overlapping ranges. $block is a single netblock, expressed as either "start-finish", or "address/prefix". Example: @cidr_list=Net::CIDR::range2cidr("192.68.0.0-192.68.0.255"); @cidr_list=Net::CIDR::cidradd("10.0.0.0/8", @cidr_list); @cidr_list=Net::CIDR::cidradd("192.68.1.0-192.68.1.255", @cidr_list); The result is a two-element array: ("10.0.0.0/8", "192.68.0.0/23"). IPv6 addresses are handled in an analogous fashion. $found=Net::CIDR::cidrlookup($ip, @cidr_list); Search for $ip in @cidr_list. $ip can be a single IP address, or a netblock in CIDR or start-finish notation. lookup() returns 1 if $ip overlaps any netblock in @cidr_list, 0 if not. $ip=Net::CIDR::cidrvalidate($ip); Validate whether $ip is a valid IPv4 or IPv6 address, or a CIDR. Returns its argument or undef. Spaces are removed, and IPv6 hexadecimal address are converted to lowercase. If $ip contains a "/", it must be a valid CIDR, otherwise it must be a valid IPv4 or an IPv6 address. A technically invalid CIDR, such as "192.168.0.1/24" fails validation, returning undef. BUGS
Garbage in, garbage out. Always use cidrvalidate() before doing anything with untrusted input. Otherwise, "slightly" invalid input will work (extraneous whitespace is generally OK), but the functions will croak if you're totally off the wall. AUTHOR
Sam Varshavchik <sam@email-scan.com> With some contributions from David Cantrell <david@cantrell.org.uk> perl v5.14.2 2012-05-01 CIDR(3pm)