How do I get my public ip address in a shell script?

dig, dns, linux, networking, shell

Solution

Don't make this harder than it needs to be... use `+short`

[mpenning@Bucksnort ~]$ dig +short mike.homeunix.com
76.21.48.169
[mpenning@Bucksnort ~]$

Problem

This command returns my ip address with additional information. ``` dig @resolver1.opendns.com myip.opendns.com ; <<>> DiG 9.6-ESV-R4-P3 <<>> @resolver1.opendns.com myip.opendns.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48206 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;myip.opendns.com. IN A ;; ANSWER SECTION: myip.opendns.com. 0 IN A 122.167.119.178 ;; Query time: 199 msec ;; SERVER: 208.67.222.222#53(208.67.222.222) ;; WHEN: Fri May 18 11:46:51 2012 ;; MSG SIZE rcvd: 50 ``` I only want to extract my ip address from this. How can I extract my ip address from the `dig` output?

Original source