How to validate an IP address


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to validate an IP address
# 1  
Old 02-22-2005
How to validate an IP address

hi

I need a simple script to do the following.

I need to check the user input for

1. quad dotted notation.
2. check that all of the inputs are numeric and within 1-255 range.

Could someone please help me?

I tried to use egrep to check for dotted notation.

quad=1.1.1.12
QUAD4=`echo "${quad}" | egrep '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'`
echo $QUAD4

this validates ok excepts when I have a test ip address as "1.2.2.1a" it fails to validate if and return me the ip adrees itself.

For the second step I have no clue . I would really appreciate if anyone could give any suggestion.


Thanks,
Sabina
# 2  
Old 02-22-2005
Give this a try
Code:
#!/bin/sh

echo "Enter IP address"
read quad

oldIFS=$IFS
IFS=.
set -- $quad

if [ "$#" -ne "4" ]; then
  echo "Must have 4 parts"
  exit 1
fi

for oct in $1 $2 $3 $4; do
  echo $oct | egrep "^[0-9]+$" >/dev/null 2>&1
  if [ "$?" -ne "0" ]; then
     echo "$oct: Not numeric"
     exit 1
  else
     if [ "$oct" -lt "0" -o "$oct" -gt "255" ]; then
        echo "$oct: Out of range"
        exit 1
     fi
  fi
done

# if we're here, we're validated
echo "$quad validates OK!"
exit 0

Cheers
ZB
# 3  
Old 02-23-2005
Hi ZB

I tried it and it works pertfectly. I really like your code. It look so neat and precise. Thanks a lot for your time. I really appreciate it.

Sabina
# 4  
Old 02-23-2005
Hi ZB

I found a case where if fails.

ip=1.2.3.4.

If we have nothing after last "." if failes to recognize it as invalid ip address.

Thanks,
Sabina
# 5  
Old 02-23-2005
No problem - this should fix it....
Code:
#!/bin/sh

echo "Enter IP address"
read quad

oldIFS=$IFS
IFS=.
set -- $quad

if [ "$#" -ne "4" ]; then
  echo "Must have 4 parts"
  exit 1
fi

for oct in $1 $2 $3 $4; do
  echo $oct | egrep "^[0-9]+$" >/dev/null 2>&1
  if [ "$?" -ne "0" ]; then
     echo "$oct: Not numeric"
     exit 1
  else
     if [ "$oct" -lt "0" -o "$oct" -gt "255" ]; then
        echo "$oct: Out of range"
        exit 1
     fi
  fi
done

# New code from here....
echo "$quad" | grep "\.$" >/dev/null 2>&1
if [ "$?" -eq "0" ]; then
  echo "Trailing period - invalid"
  exit 1
fi
# to here.....

# if we're here, we're validated
echo "$quad validates OK!"
exit 0

Cheers
ZB
# 6  
Old 12-02-2008
Another IP for which this script would fail: 0.1.2.3

adding this helps:

if [ "$1" -eq "0" ]
then
echo "First octet must not be zero (0)..."
exit 1
fi
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

C program to detect duplicate ip address if any after assigning ip address to ethernet interface

Hi , Could someone let me know how to detect duplicate ip address after assigning ip address to ethernet interface using c program (3 Replies)
Discussion started by: Gopi Krishna P
3 Replies

2. IP Networking

Tracing a MAC address to IP address: Solaris

Hi there I lost connectivity to one of our remote systems and when I checked the messages log I found the following: Aug 10 23:42:34 host xntpd: time reset (step) 1.681729 s Aug 16 13:20:51 host ip: WARNING: node "mac address" is using our IP address x.x.x.x on aggr1 Aug 16 13:20:51 host... (9 Replies)
Discussion started by: notreallyhere
9 Replies

3. UNIX for Dummies Questions & Answers

What would the physical address be for virtual address?

Hi guys, I got one problem which I definetily no idea. What would the physical address be for virtual address? 1) 2ABC 2) 3F4B Here is the page table:see attached Thank you sos sososososso much!! (0 Replies)
Discussion started by: lemon_06
0 Replies

4. Shell Programming and Scripting

Validate an IP address - Return to menu

hi! I need a script that, among other things, presents a menu to the user, checks the user input for an IP address (in quad dotted notation), and then "redirects" (with sed) that IP address to the Firewall script. The script must check that all of the inputs are valid IP addresses (numeric,... (1 Reply)
Discussion started by: zetetic
1 Replies

5. UNIX for Dummies Questions & Answers

Panic kernal-mode address fault on user address 0x14

:) Firstly Hi all!!, im NEW!! and on here hoping that someone might be able to offer me some help... i have a server that keeps crashing every few days with the error message: PANIC KERNAL-MODE ADDRESS FAULT ON USER ADDRESS 0X14 KERNAL PAGE FAULT FROM (CS:EIP)=(100:EF71B5BD) EAX=EF822000... (10 Replies)
Discussion started by: Twix
10 Replies

6. Shell Programming and Scripting

ksh - how to list all ip address between 2 ip address

Trying to do a ksh script that needs to list all ip address between ip address a and b .. ie. Ip address A=192.168.1.200 Ip address B=192.168.2.15 So the subnet changes from 1 to 2 but I want to list all possible ip addresses between the 2.. Which would be: 192.168.1.200... (4 Replies)
Discussion started by: frustrated1
4 Replies

7. Programming

validate IPV6 address in windows using c++

I know there is a function inet_tpon for unix platforms to validate ipv6 addresses.But i need an equivalent of windows.When i use this function with the header file <winsock2.h> the visual studio 2005 on win2003 issues an error saying identifier not found :confused: (3 Replies)
Discussion started by: guru13
3 Replies

8. IP Networking

How to Achive IP address through MAC(Ethernet) address

Hi sir, i want to make such programe which takes MAC(Ethernet) address of any host & give me its IP address....... but i'm nt getting that how i can pass the MAC address to Frame........ Please give me an idea for making such program... Thanks & regards Krishna (3 Replies)
Discussion started by: krishnacins
3 Replies

9. UNIX for Dummies Questions & Answers

network address and broadcast address?

say I have a IP address which is 10.0.0.12, and subnet mask is 255.255.255.240, what is the network address and what is the broadcast address which host lives on? And could you explain how to get the answer? thanx in advance! (7 Replies)
Discussion started by: pnxi
7 Replies

10. Shell Programming and Scripting

validate

hi need help here, a bit of code im doing requires a number to be enetered i have got validation and loop if its outside a ceratain range, but was wondering what code i need to validate if a character has been entered. cheers (3 Replies)
Discussion started by: ruffenator
3 Replies
Login or Register to Ask a Question