Linux 如何在shell脚本中获取公共ip地址?

Linux 如何在shell脚本中获取公共ip地址?,linux,shell,networking,dns,dig,Linux,Shell,Networking,Dns,Dig,此命令返回我的ip地址和其他信息 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: Q

此命令返回我的ip地址和其他信息

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
dig@resolver1.opendns.com myip.opendns.com
;  挖掘9.6-ESV-R4-P3@resolver1.opendns.com myip.opendns.com
; (找到1台服务器)
;; 全局选项:+cmd
;; 得到答案:

;; ->>HEADER如果您使用的是bashshell,这将对您有效

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

注意:我的假设是您计划提取“答案部分”后面打印的ip

不要让这变得比需要的更难。。。使用
+short

[mpenning@Bucksnort ~]$ dig +short mike.homeunix.com
76.21.48.169
[mpenning@Bucksnort ~]$
从我的博客:

另一种方法是:

sudo apt install stuntman-client
然后


以下内容适用于我:“dig@resolver1.opendns.com myip.opendns.com | grep^myip.opendns.com | tr'\t':| cut-d:-f5”你为什么要使用缩写器?此外,这应该是一个shell脚本,而不是URL。因为结果应该只有IP地址,没有其他信息,所以我使用它。此外,这是一个shell命令,应该是一个命令,而不是脚本。URL只是一个用法示例。
sudo apt install stuntman-client
myip=$(stunclient --localport 8888 stun.l.google.com 19302|grep Mapped|cut -d ":" -f 2|tr -d " ")