regular expression for MAC address validation


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting regular expression for MAC address validation
# 8  
Old 03-08-2007
Quote:
Originally Posted by matrixmadhan
Code:
#! /opt/third-party/bin/perl

my $ip = "a10.2.45.23";

if( $ip =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/ ) {
  print "Match\n";
}
else {
  print "No Match\n";
}

exit 0

Not extensive though! Smilie
not quite though. if user enters 256.256.256.256, it will still match, while in practice, this ip is invalid. somehow have to add a range from 0-255.
# 9  
Old 03-08-2007
Quote:
not quite though. if user enters 256.256.256.256, it will still match, while in practice, this ip is invalid. somehow have to add a range from 0-255.
and this,

Code:
#! /opt/third-party/bin/perl

my $ip = "10.256.45.23";

my $no = 1;
if( $ip =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/ ) {
  my @split_arr = split(/\./, $ip);
  foreach my $var (@split_arr) {
    if( $var > 255 ) {
      $no = 0;
      last;
    }
  }
  if ( $no ) {
    print "Match\n";
  }
  else {
    print "No Match\n";
  }
}
else {
  print "No Match\n";
}

exit 0

# 10  
Old 03-08-2007
Thanks for your responses, I know this may be a simple question but how do i get my variable (read in by my script) ie ....


Code:
echo "Please enter your mac address now with colons"
read MAC

to be validated against the regex ??

do I use an if statement, ie .....

Code:
if [ $MAC=regex ] then
proceed
else
ERROR
fi

Is anything like that possible ???
# 11  
Old 03-08-2007
if you use the sed solution: an eg

Code:
result=`var=`echo 00:60:08:C4:99:@ | sed -n "/^\([0-9A-Z][0-9A-Z]:\)\{5\}[0-9A-Z][0-9A-Z]$/p"``
if [ -z $result ]; then
    ....
fi

-z checks for empty string
# 12  
Old 03-08-2007
Quote:
Originally Posted by ghostdog74
if you use the sed solution: an eg

Code:
result=`var=`echo 00:60:08:C4:99:@ | sed -n "/^\([0-9A-Z][0-9A-Z]:\)\{5\}[0-9A-Z][0-9A-Z]$/p"``
if [ -z $result ]; then
    ....
fi

-z checks for empty string
You cannot really use nested backticks! Smilie

use this,
Code:
result=$( echo 00:60:08:C4:99:12 | sed -n "/^\([0-9A-Z][0-9A-Z]:\)\{5\}[0-9A-Z][0-9A-Z]$/p" )
if [ -z $result ]; then
  echo $result
fi

# 13  
Old 03-08-2007
sorry typo.
Code:
linux:/home # result=`echo 00:60:08:C4:99:AA | sed -n "/^\([0-9A-Z][0-9A-Z]:\)\{5\}[0-9A-Z][0-9A-Z]$/p"`
linux:/home# echo $result
00:60:08:C4:99:AA

# 14  
Old 03-08-2007
ok so my script looks like this

Code:
echo enter mac
read mac
result=$( echo $mac | sed -n "/^\([0-9A-Z][0-9A-Z]:\)\{5\}[0-9A-Z][0-9A-Z]$/p" )
if [ -z $result ]; then
  echo mac doesnt comply
else
  echo mac is fine
fi

but when i run it, whatever I put in, valid or not, it comes back with the same answer

Code:
[root@my-server] # ./test-mac.sh
enter mac
00:60:08:C4:99:44
mac doesnt comply

or ...

Code:
[root@my-server] # ./test-mac.sh
enter mac
sausages
mac doesnt comply


is there something im missing
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. IP Networking

MAC Address - Four Interfaces with the same MAC Address

four interfaces with ifconfig all interfaces have the same mac. If is not set for unique. but it still works. what difference does it make to have all macs the same or different? (4 Replies)
Discussion started by: rrodgers
4 Replies

2. UNIX for Advanced & Expert Users

sed: -e expression #1, char 0: no previous regular expression

Hello All, I'm trying to extract the lines between two consecutive elements of an array from a file. My array looks like: problem_arr=(PRS111 PRS213 PRS234) j=0 while } ] do k=`expr $j + 1` sed -n "/${problem_arr}/,/${problem_arr}/p" problemid.txt ---some operation goes... (11 Replies)
Discussion started by: InduInduIndu
11 Replies

3. Programming

Perl: How to read from a file, do regular expression and then replace the found regular expression

Hi all, How am I read a file, find the match regular expression and overwrite to the same files. open DESTINATION_FILE, "<tmptravl.dat" or die "tmptravl.dat"; open NEW_DESTINATION_FILE, ">new_tmptravl.dat" or die "new_tmptravl.dat"; while (<DESTINATION_FILE>) { # print... (1 Reply)
Discussion started by: jessy83
1 Replies

4. Shell Programming and Scripting

Regular expression to extract ipv6 address

Hi all , I have a string in my weblog xheader v6-day-2011:xx:yy:zz:qq:qq:ww:ee:rr My requirement is to lookup the sting v6-day-2011 in this header and if found would like to extract the V6 ip part . v6-day-2011 is always constant for a ipv6 entry so i would like to extract every thing... (4 Replies)
Discussion started by: jambesh
4 Replies

5. Shell Programming and Scripting

Integer expression expected: with regular expression

CA_RELEASE has a value of 6. I need to check if that this is a numeric value. if not error. source $CA_VERSION_DATA if * ] then echo "CA_RELESE $CA_RELEASE is invalid" exit -1 fi + source /etc/ncgl/ca_version_data ++ CA_PRODUCT_ID=samxts ++ CA_RELEASE=6 ++ CA_WEEK_NO=7 ++... (3 Replies)
Discussion started by: ketkee1985
3 Replies

6. 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

7. Linux

Regular expression to extract "y" from "abc/x.y.z" .... i need regular expression

Regular expression to extract "y" from "abc/x.y.z" (2 Replies)
Discussion started by: rag84dec
2 Replies

8. Shell Programming and Scripting

IP address validation function

Hi does anybody have a ksh/sh/bash function that i can embed into my script that i could use to validate an inputted IP address, I tried using one big long regular expression but it got very long and complicated ie #!/bin/ksh echo " Please enter your IP address" read IP ---some function... (6 Replies)
Discussion started by: hcclnoodles
6 Replies

9. 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

10. Shell Programming and Scripting

Regular Expression + Aritmetical Expression

Is it possible to combine a regular expression with a aritmetical expression? For example, taking a 8-numbers caracter sequece and casting each output of a grep, comparing to a constant. THX! (2 Replies)
Discussion started by: Z0mby
2 Replies
Login or Register to Ask a Question

Featured Tech Videos