Debian vps获取公网IP

在某些时候我们需要通过shell脚本获取到vps的公网IP,不过我想如果是自己写急切之间也想不出特别好的办法,这篇文章就介绍下如何使用shell脚本获取vps的公网IP

shell脚本获取公网IP有两种思路:(1)利用vps的网卡信息,但是这种情况有时会出现问题,返回的可能是内网IP。(2)访问外部网站,通过外部网站返回公网IP。

利用网卡信息获取IP

获取网卡信息可以采用ifconfig或者ip addr命令。

采用ifconfig命令获取IP

在命令行下输入ifconfig会得到所有的网卡信息,其中IPV4的地址信息一般是inet addr:127.0.0.1这种形式,通过匹配inet addr我们可以得到所有网卡的IPv4地址,然后排除127.0.0.1,即可获得本机的IP地址,值得注意的是本机的IP地址可能是内网IP也可能是公网IP。

shell命令如下:

1
ifconfig | grep 'inet addr:'| grep -v '127.0.*' | cut -d: -f2 | awk '{ print $1}'

采用ip addr命令获取IP

原理与ifconfig命令类似,这里就不再过多介绍,直接给出shell命令

1
ip addr | awk '/inet / {sub(///.*/, "", $2); print $2}'| grep -v '127.0.*' | cut -d: -f2 | awk '{ print $1}'

上面说过由于计算机网络环境的不同,可能会导致以上方法获得的本机IP不是公网IP,最保险的还是下面介绍的方法。

利用外部网站获取公网IP

下面的命令中需要用到curl,请先安装下curl。

1
apt-get install curl

提供几个可以返回公网IP的网站。

1、http://ipecho.net/plain

可以使用wget

1
wget -qO- http://ipecho.net/plain

也可以使用curl

1
curl http://ipecho.net/plain

2、ifconfig.me

命令为

1
curl -s ifconfig.me/ip

3、checkip.dyndns.com

命令为

1
curl -s checkip.dyndns.com | cut -d' ' -f 6  | cut -d'<' -f 1

小结

上面介绍了两种方法获取公网IP,但是第一种方法由于计算机网络环境的不同可能会获取不到正确的公网IP,因此推荐使用第二种方法。

参考文章:Get your private and public IP from the Linux terminal



发表评论