How to get your public IP in shell script?

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 want to extract my ip address from this. How can I extract my ip address from dig output?

+6
source share
4 answers

Don't make it harder than you need ... use +short

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

If you use a bash shell this will work for you

 grep -A1 "ANSWER SECTION" ip_file.txt | awk '{if(NF==5)print $5;}' 

NOTE. My guess is that you plan to retrieve the IP address printed after the “RESPONSE” section

+3
source
 dig +short myip.opendns.com @resolver1.opendns.com 

From my blog: http://blog.valch.name/2016/03/17/show-your-ip/

+1
source

Alternative way:

 sudo apt install stuntman-client 

then

 myip=$(stunclient --localport 8888 stun.l.google.com 19302|grep Mapped|cut -d ":" -f 2|tr -d " ") 
0
source

Source: https://habr.com/ru/post/916064/


All Articles