在android中获取网关IP地址

Him*_*shu 25 ip android gateway

如何获取网关IP详细信息,有使用wifimanager的选项但是.如果没有wify如何在使用usb tethering连接时在android设备中找到网关,dns和其他细节.

小智 22

我在android 2.3.4上使用cyanogenmod 7.2,然后只需打开终端模拟器并键入:

$ ip addr show
$ ip route show
Run Code Online (Sandbox Code Playgroud)


Six*_*Six 15

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

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

列出所有可用的属性:

getprop
Run Code Online (Sandbox Code Playgroud)

获取WiFi界面:

getprop wifi.interface
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

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

ifconfig wlan0

netcfg | awk '{if ($2=="UP" && $3 != "0.0.0.0/0") isup=1} END {if (! isup) exit 1}'
Run Code Online (Sandbox Code Playgroud)

使用以下任一方法获取wlan0的IP地址(仅当连接时):

ifconfig wlan0 | awk '{print $3}'

netcfg | awk '/^wlan0/ {sub("(0\\.0\\.0\\.0)?/[0-9]*$", "", $3); print $3}'
Run Code Online (Sandbox Code Playgroud)

为了彻底,要获得面向Internet的公共IP地址,您将需要使用外部服务.获取您的公共IP:

wget -qO- 'http://ipecho.net/plain'
Run Code Online (Sandbox Code Playgroud)

要获取您的公共主机名:

wget -qO- 'http://ifconfig.me/host'
Run Code Online (Sandbox Code Playgroud)

或者直接从您的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
Run Code Online (Sandbox Code Playgroud)

注意:上述awk命令似乎过于复杂,因为它能够处理各种版本的输出nslookup.Android包括的最小版本nslookup作为一部分busybox但有一个独立版本以及(通常包括在dnsutils).


小智 5

在Android 7上可以运行:

 ip route get 8.8.8.8
Run Code Online (Sandbox Code Playgroud)

通过网关的输出将是:8.8.8.8 ...


Muh*_*han -1

该解决方案将为您提供网络参数。看看这个解决方案

  • 您提到的解决方案使用 wifimanager,当设备未连接到 wify 时,它不起作用。当设备通过 USB 网络共享或通过 GPRS 连接时如何查找这些详细信息。 (3认同)