Shell Script To Read IP Address ( Find Ip Address Script )

in Script

#!/bin/sh
# Shell script scripts to read ip address
# -------------------------------------------------------------------------
# Copyright (c) 2005 nixCraft project <http://cyberciti.biz/fb/>
# This script is licensed under GNU GPL version 2.0 or above
# -------------------------------------------------------------------------
# This script is part of nixCraft shell script collection (NSSC)
# Visit http://bash.cyberciti.biz/ for more information.
# -------------------------------------------------------------------------
# Get OS name
OS=`uname`
IO="" # store IP
case $OS in
   Linux) IP=`ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'`;;
   FreeBSD|OpenBSD) IP=`ifconfig  | grep -E 'inet.[0-9]' | grep -v '127.0.0.1' | awk '{ print $2}'` ;;
   SunOS) IP=`ifconfig -a | grep inet | grep -v '127.0.0.1' | awk '{ print $2} '` ;;
   *) IP="Unknown";;
esac
echo "$IP"
Want to read Linux tips and tricks, but don't have time to check our blog everyday? Subscribe to our email newsletter to make sure you don't miss a single tip/tricks.

{ 1 trackback }

How to "sed" things? - nixCraft Linux Forum
August 15, 2008 at 10:16 pm

{ 11 comments… read them below or add one }

EstebanWeb.cl May 8, 2008 at 12:16 am

Another way, but I think that is better, because in your way, it will give you your local IP, like 192.168.0.101…

you need to have “links2″ already intalled

#!/bin/sh
IP_ACTUAL=`links2 -dump http://www.whatismyip.com | grep “Your IP ” | awk ‘{ print $5 }’`
echo $IP_ACTUAL

Reply

EstebanWeb.cl May 8, 2008 at 1:46 am

And also it doesn’t work in Ubuntu 8.04 in another languages, like spanish

Reply

Kyle Brandt June 18, 2008 at 2:45 am

If one must parse ifconfig what about:

ifconfig | egrep -o '([0-9]{1,3}\.){3}[0-9]{1,3}' | egrep -v '255|(127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})'

I think I would like that more then cutting with awk or cut. Also I don’t think it matters what *nix system you are running ifconfig on.

Also in the above example grep -v ‘127.0.0.1′ the periods are not literal since they are not escaped, but rather they match any character.

-Kyle

Reply

lied June 23, 2008 at 2:14 pm

You should replace “ifconfig” with “/sbin/ifconfig” normaly /sbin isn’t in $PATH.

Reply

Andrey July 17, 2008 at 9:36 am

/sbin/ifconfig eth0 | awk ‘/inet/ {print $2}’ | sed ’s/addr://’

Reply

pooppp July 31, 2008 at 12:43 pm

Hai,
I tried to print the HWaddress in interface as like in the above script..i m unable to print..can u plz help me to print the HWaddress as like inet addr..

eth1 Link encap:Ethernet HWaddr 00:0C:FC:00:3A:7E
inet addr:17.1.1.150 Bcast:17.255.255.255 Mask:255.0.0.0

Reply

vivek July 31, 2008 at 9:42 pm

Try
ifconfig eth0 | grep HWaddr | awk -F'HWaddr' '{ print $2}'

Reply

Bubuntu August 15, 2008 at 12:41 pm

for ubuntu:

ifconfig | grep 'inet adr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'

Reply

Peteris Krumins September 25, 2008 at 4:02 pm

I wrote a post how to extract IP Address with 4 different tools – sed, awk, perl 5.8 and perl 5.10:

http://www.catonmat.net/blog/golfing-the-extraction-of-ip-addresses-from-ifconfig/

Pete

Reply

Paul Aviles June 4, 2009 at 12:17 pm

A very simple way
who | cut -d”(” -f2 | cut -d”)” -f1

Enjoy

Paul

Reply

Tom June 25, 2009 at 3:02 pm

To Kyle Brandt:
This will no work on Solaris as there is no -o option for egrep on said platform. Much as I love the gnu toolset, the unix toolset often has less advanced features so easy commands become harder.

To Paul Avilles:
This does not get you the IP address of the machine. It gets you the IP address of the machine that you are logged in from – not really helpful.

Sorry to be so negative :(

Tom…

Reply

Leave a Comment

Previous post: Shell Script to stop DLink PCI wireless lan card DWL 520 (Debian Linux)

Next post: Shell script iptables based firewall for virtuozzo VPS for REDHAT Linux