Получите IP-адрес шлюза в android

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

Solutions Collecting From Web of "Получите IP-адрес шлюза в android"

Я использую cyanogenmod 7.2 на android 2.3.4, затем просто открываю эмулятор терминала и печатаю:

$ ip addr show $ ip route show 

Я хотел опубликовать этот ответ в виде обновления для пользователей более поздних сборок 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 ).

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

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

DNS-сервер получается через

 getprop net.dns1 

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

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

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