Finding My IP Address
Problem
You need to know the IP address of the machine you are running on.
Solution
There is no good way to do this that will work on all systems in all situations, so we will present several possible solutions.
First, you can parse output from ifconfig to look for IP addresses. These examples will either return the first IP address that is not a loopback or nothing if there are no interfaces configured or up.
# cookbook filename: finding_ipas # IPv4 Using awk, cut and head $ /sbin/ifconfig -a | awk '/(cast)/ { print $2 }' | cut -d':' -f2 | head -1 # IPv4 Using Perl, just for fun $ /sbin/ifconfig -a | perl -ne 'if ( m/^\s*inet (?:addr:)?([\d.]+).*?cast/ ) { print qq($1\n); exit 0; }' # IPv6 Using awk, cut and head $ /sbin/ifconfig -a | egrep 'inet6 addr: |address: ' | cut -d':' -f2- \ | cut -d'/' -f1 | head -1 | tr -d ' ' # IPv6 Using Perl, just for fun $ /sbin/ifconfig -a | perl -ne 'if ( m/^\s*(?:inet6)? \s*addr(?:ess)?: ([0-9A-Fa-f:]+)/ ) { print qq($1\n); exit 0; }'
Second, you can get your hostname and resolve back to an IP address. This is often unreliable because today’s systems (especially workstations) might have incomplete or incorrect hostnames and/or might be on a dynamic network that lacks proper reverse lookup. Use at your own risk and test well.
$ host $(hostname)
Third, you may be more interested in your host’s external, routable address than its internal RFC 1918 address. In that case you can use an external host such as http://www.ippages.com/ or ...
Get bash Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.