我想后这个答案对于更近的Android用户更新构建(CM11 /奇巧/ 4.4.4)。我还没有测试任何与TouchWiz或更旧的Android版本,所以YMMV。

以下命令可以在所有常用的地方运行(ADB,Terminal Emulator,shell脚本,Tasker)。

列出所有可用的属性:

getprop

获取WiFi接口:

getprop wifi.interface

无线属性:

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

上述命令将输出信息,而不管是否无线实际上连接当时。

使用下列任一检查为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}'

只是为了彻底,为了获得面向公众互联网的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中)。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐