[ifconfig] Get IP address of your machine (internal & external)

NOTE: Much simpler is hostname -I or hostname --all-ip-addresses which gives you all addresses for the host, IPV4s as well as IPV6s. Check hostname -h for more nifty details

ifconfig is for configuring a network interface. (Interface Configuration)

Get IP by interface (eth, wlan, lo etc)

ifconfig $1 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'


grep prints lines mathcing a pattern awk is a pattern scanning and processing language.


  • eth0 = Ethernet
  • wlan0 = Wi-Fi
  • lo = Local Network (
  • inet = TCP/IP, default
  • inet6 = IPv6

See more about linux interface. ifconfig -l on a Mac lists all inetrfaces available.

Get IP of every interface

ifconfig |grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'


Get IPv6

ifconfig eth | grep --color 'inet6'



ifconfig eth | grep 'inet6' | awk '{print $3}'


external IP

You can curl an endpoint for your external public IP, like so:

curl http://ipecho.net/plain; echo

There are plenty of services that give you your public IP address by going to a URL. You can then curl that URL to see your extrenal public IP in CLI.

Some alternatives are:

curl http://ip.appspot.com/
curl https://icanhazip.com/