我想将此答案发布为更新的 Android 版本 (CM11/KitKat/4.4.4) 用户的更新。我没有用 TouchWiz 或更早的 Android 版本测试过这些,所以 YMMV。
以下命令可以在所有常用位置(ADB、终端仿真器、shell 脚本、Tasker)运行。
列出所有可用的属性:
getprop
获取WiFi接口:
getprop wifi.interface
WiFi 属性:
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 中)。