天天看点

Android查询网关地址,在android中获取网关IP地址

我想将此答案发布为更新近期Android版本(CM11 / KitKat / 4.4.4)用户的更新。我还没有使用TouchWiz或更老的Android版本来测试任何这些YMMV。

可以在所有常用位置(ADB,终端仿真器,shell脚本,Tasker)中运行以下命令。

列出所有可用的属性:

getprop获取WiFi接口:

getprop wifi.interfaceWiFi属性:

getprop dhcp.wlan0.dns1

getprop dhcp.wlan0.dns2

getprop dhcp.wlan0.dns3

getprop dhcp.wlan0.dns4

getprop dhcp.wlan0.domain

getprop dhcp.wlan0.gateway

getprop dhcp.wlan0.ipaddress

getprop dhcp.wlan0.mask无论当时是否实际连接WiFi,上述命令都将输出信息。

使用以下任一方法检查wlan0是否打开:

ifconfig wlan0

netcfg | awk '{if ($2=="UP" && $3 != "0.0.0.0/0") isup=1} END {if (! isup) exit 1}'使用以下任一方法获取wlan0的IP地址(仅当连接时):

ifconfig wlan0 | awk '{print $3}'

netcfg | awk '/^wlan0/ {sub("(0\\.0\\.0\\.0)?/[0-9]*$", "", $3); print $3}'为了彻底,要获得面向Internet的公共IP地址,您将需要使用外部服务。获取您的公共IP:

wget -qO- 'http://ipecho.net/plain'要获取您的公共主机名:

wget -qO- 'http://ifconfig.me/host'或者直接从您的IP地址获取您的公共主机名:

(nslookup "$(wget -qO- http://ipecho.net/plain)" | awk '/^Address 1: / { if ($NF != "0.0.0.0") {print $NF; exit}}; /name =/ {sub("\\.$", "", $NF); print $NF; exit}') 2>/dev/null注意:前面提到的awk命令似乎过于复杂,因为它能够处理各种版本的nslookup的输出。 Android包含nslookup的最小版本作为busybox的一部分,但也有一个独立版本(通常包含在dnsutils中)。