28

如何获取网关 IP 详细信息,但有使用 wifimanager 的选项。如果没有 wify 如何在使用 USB 网络共享连接时在 android 设备中找到网关、dns 和其他详细信息。

4

9 回答 9

23

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

$ ip addr show
$ ip route show
于 2012-03-21T08:22:07.047 回答
16

我想将此答案发布为更新的 Android 版本 (CM11/KitKat/4.4.4) 的用户的更新。我没有用 TouchWiz 或旧的 Android 版本测试过这些,所以 YMMV。

以下命令可以在所有常用位置(ADB、终端仿真器、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

以上命令无论当时是否实际连接了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 包含一个最小版本的nslookupbusybox但也有一个独立版本(通常包含在 中dnsutils)。

于 2014-11-22T06:55:17.177 回答
13

在 Android 7 上运行它:

 ip route get 8.8.8.8

输出将是:8.8.8.8 via gateway ...

于 2018-02-05T15:34:56.620 回答
4

前往终端

$ adb -s UDID shell
$ ip addr | grep inet 
or
$ netcfg | grep inet
于 2014-06-06T17:22:34.420 回答
2

DNS服务器通过以下方式获得

getprop net.dns1 

更新:从 Android Nougat 7.x 开始,ifconfig 存在,而 netcfg 消失了。所以 ifconfig 可以用来查找 IP 和网络掩码。

于 2013-02-20T02:31:54.843 回答
2

尝试以下操作:

ConnectivityManager connectivityManager = ...;
LinkProperties linkProperties = connectivityManager.getLinkProperties(connectivityManager.GetActiveNetwork());
for (RouteInfo routeInfo: linkProperties.getRoutes()) {
    if (routeInfo.IsDefaultRoute() && routeInfo.hasGateway()) {
        return routeInfo.getGateway();
    }
}
于 2020-06-30T00:27:07.327 回答
1

这似乎对我很有效。在 Touchwiz 5.1、LineageOS 7.1 和 CyanogenMod 11 上测试。

ip route list match 0 table all scope global

给出与此类似的输出:

default via 192.168.1.1 dev wlan0  table wlan0  proto static
于 2019-04-04T16:54:40.703 回答
0

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

于 2011-06-09T05:13:57.647 回答
0

安装终端模拟器应用程序,然后查看iproute从命令提示符运行的路由表。不需要root权限。我不知道如何获取 DNS 服务器。没有/etc/resolv.conf文件。您可以尝试nslookup www.google.com查看它为您的服务器报告的内容,但在我的手机上它报告0.0.0.0的内容并不太有用。

于 2012-09-30T19:38:50.100 回答