This Linux quick tip will show you many different way to get your public IP address from the command line using different tools. Since not all Linux distributions have the same set of packages (programs) installed, some of these example may or may not work on your system. For example, default Red Hat and CentOS installations do not have the dig tool installed.
All of these options will depend on external sources. We will try to use as many different sources as possible in the examples to ensure reliability.
Using the curl Command
Curl is a tool used to transfer data to and from a server using many different supported protocols. Here we will use the HTTPS protocol to pull a webpage and grep to extract our public IP address. Here are some examples of how to get your public IP address from the command line using curl.
ipaddr.pub
curl ipaddr.pub
The ipaddr.pub service can also provide additional information from the command line. You can find a complete list of options on the ipaddr.pub website.
ifconfig.io
curl https://ifconfig.io
WhatismyIP.com
curl https://whatsmyip.com/ -s | grep -oE "\b([0-9]{1,3}.){3}[0-9]{1,3}\b" -m1
Google.com
curl https://www.google.com/search?q=what+is+my+ip+address -s | grep -oE "\b([0-9]{1,3}.){3}[0-9]{1,3}\b" -m1
ipecho.net
curl -s http://ipecho.net/plain
akamai.com
curl -s http://whatismyip.akamai.com
Using the wget Command
The wget command is a command line utility for non-interactive download of files from the web. It supports most HTTP, HTTPS, and FTP as well as connecting through a HTTP Proxy server. Here are some examples of how to get your public IP address from the command line using wget.
ipaddr.pub
wget -qO- ipaddr.pub/cli
ipecho.net
wget -qO- http://ipecho.net/plain
icanhazip.com
wget -qO- icanhazip.com
Using the dig Command
The dig command is a command line tool for querying DNS servers. This utility is not always available. If you want to install dig, it is usually packaged in bind-utils on Red Hat based distros and dnsutils on Debian based distros. Here are some examples of how to get your public IP address from the command line using dig.
google.com
dig @ns1.google.com TXT o-o.myaddr.l.google.com +short
opendns.com
dig +short myip.opendns.com @resolver1.opendns.com
Using the host Command
The host command is a simple command line utility for performing DNS queries. Here are some examples of how to get your public IP address from the command line using the host command.
opendns.com
host myip.opendns.com resolver1.opendns.com | grep -m2 -oE "\b([0-9]{1,3}.){3}[0-9]{1,3}\b" | tail -n1
Using the nslookup Command
The nslookup command is tool that queries DNS Servers, much like dig. This command is available on many operating systems including Linux, UNIX and Windows. Here are some examples of how to get your public IP address from the command line using nslookup.
google.com
nslookup -query=TXT o-o.myaddr.l.google.com ns1.google.com | grep -m2 -oE "\b([0-9]{1,3}.){3}[0-9]{1,3}\b" | tail -n1
opendns.com
nslookup myip.opendns.com resolver1.opendns.com | grep -m2 -oE "\b([0-9]{1,3}.){3}[0-9]{1,3}\b" | tail -n1
Conclusion
There are many different ways to get your public IP address from the command line. Which you use will mostly depend on what is installed on your system. Our preferred method would be from a DNS server using the dig command, but as we stated, dig isn't always available.