最近在写Shell脚本,经常遇到要获取主机的IP地址。我们通常是使用ifconfig
命令查看,他会产生一大堆信息,但是我们脚本中时间只需要一个公网IP。那么我们该怎么做呢?
获取公网IP地址
使用ip
命令可以获得更加简洁的信息,因此我们使用ip
配合awk就可以获得纯IP地址:
1 | ip route get 8.8.8.8 | awk '/8.8.8.8/ {print $NF}' |
这个命令通过查看查看8.8.8.8地址的路由包的来源,获取本机的公网IP地址,然后使用awk
命令,过滤含有8.8.8.8的行,最后一行即是IP地址。
获取CIDR标记法的IP地址
1 | ip -o -f inet addr show | awk '/scope global/ {print $4}' |
该命令可以获取使用CIDR标记法的IP地址,不过它有时候会产生多个结果,比如有的Linux有安装了虚拟网络接口。