Получить IP-адрес шлюза в Android - PullRequest
24 голосов
/ 09 июня 2011

Как получить IP-данные шлюза, есть опция с использованием wifimanager, но. Если нет смысла искать шлюз, днс и другие подробности в андроид устройстве при подключении через usb-модем.

Ответы [ 8 ]

22 голосов
/ 21 марта 2012

Я использую CyanogenMod 7.2 на Android 2.3.4, затем просто откройте эмулятор терминала и введите:

$ ip addr show
$ ip route show
15 голосов
/ 22 ноября 2014

Я хотел опубликовать этот ответ как обновление для пользователей более свежих сборок Android (CM11 / KitKat / 4.4.4).Я не проверял ничего из этого с TouchWiz или более ранними версиями Android, поэтому YMMV.

Следующие команды могут выполняться во всех обычных местах (ADB, эмулятор терминала, сценарии оболочки, 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}'

Используйте одно из следующих действий, чтобы получитьIP-адрес wlan0 (только если он подключен):

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).

5 голосов
/ 05 февраля 2018

На Android 7 работает это:

 ip route get 8.8.8.8

вывод будет: 8.8.8.8 через шлюз ...

4 голосов
/ 06 июня 2014

Перейти к терминалу

$ adb -s UDID shell
$ ip addr | grep inet 
or
$ netcfg | grep inet
2 голосов
/ 20 февраля 2013

DNS-сервер получен через

getprop net.dns1 

ОБНОВЛЕНИЕ: начиная с Android Nougat 7.x, если присутствуетconfig, а netcfg больше нет. Так что ifconfig можно использовать для поиска IP-адреса и сетевой маски.

0 голосов
/ 04 апреля 2019

Мне кажется, это хорошо работает. Протестировано на 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
0 голосов
/ 30 сентября 2012

Установите приложение эмулятора терминала, чтобы увидеть, как таблица маршрутизации запускается iproute из командной строки. Не требует корневых разрешений. Я не знаю, как получить DNS-сервер. Там нет /etc/resolv.conf файла. Вы можете попробовать nslookup www.google.com и посмотреть, что он сообщает для вашего сервера, но на моем телефоне он сообщает 0.0.0.0, что не слишком полезно.

0 голосов
/ 09 июня 2011

Это решение даст вам параметры сети. Проверьте это решение

...