在android中获取网关IP地址

时间:2011-06-09 04:52:06

标签: android ip gateway

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

9 个答案:

答案 0 :(得分:22)

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

$ ip addr show
$ ip route show

答案 1 :(得分:15)

我想将此答案发布为更新近期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中)。

答案 2 :(得分:5)

在Android 7上运行它:

 ip route get 8.8.8.8

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

答案 3 :(得分:4)

转到终端

$ adb -s UDID shell
$ ip addr | grep inet 
or
$ netcfg | grep inet

答案 4 :(得分:2)

通过

获取DNS服务器
getprop net.dns1 

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

这对我来说似乎很好。在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

答案 8 :(得分:0)

尝试以下操作:

ConnectivityManager connectivityManager = ...;
LinkProperties linkProperties = connectivityManager.getLinProperties(connectivityManager.GetActiveNetwork());
for (RouteInfo routeInfo: linkProperties.getRoutes()) {
    if (routeInfo.IsDefaultRoute() && routeInfo.hasGateway()) {
        return routeInfo.getGateway();
    }
}