web-dev-qa-db-fra.com

Obtenir l'adresse IP de la passerelle dans Android

Comment obtenir les détails IP de la passerelle, il existe une option utilisant wifimanager mais. S'il n'y a aucun moyen de savoir comment trouver la passerelle, le DNS et d'autres détails dans un appareil Android lorsqu'il est connecté à l'aide d'un modem USB.

23
Himanshu

J'utilise cyanogenMod 7.2 sur Android 2.3.4, puis ouvrez simplement l'émulateur de terminal et tapez:

$ ip addr show
$ ip route show
22
user432672

Je voulais publier cette réponse en tant que mise à jour pour les utilisateurs de versions plus récentes d'Android (CM11/KitKat/4.4.4). Je n'ai pas testé cela avec TouchWiz ni avec les anciennes versions d'Android, donc YMMV.

Les commandes suivantes peuvent être exécutées à tous les endroits habituels (ADB, émulateur de terminal, scripts Shell, Tasker).

Répertoriez toutes les propriétés disponibles:

getprop

Obtenir une interface WiFi:

getprop wifi.interface

Propriétés 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

Les commandes ci-dessus généreront des informations, que le WiFi soit réellement connecté ou non.

Utilisez l'une des méthodes suivantes pour vérifier si wlan0 est activé ou non:

ifconfig wlan0

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

Utilisez l’une des méthodes suivantes pour obtenir l’adresse IP de wlan0 (uniquement s’il est connecté):

ifconfig wlan0 | awk '{print $3}'

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

Par souci de rigueur, pour obtenir votre adresse IP publique Internet, vous souhaiterez utiliser un service externe. Pour obtenir votre adresse IP publique:

wget -qO- 'http://ipecho.net/plain'

Pour obtenir votre nom d'hôte public:

wget -qO- 'http://ifconfig.me/Host'

Ou pour obtenir votre nom d'hôte public directement à partir de votre adresse 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

Remarque: La commande awk mentionnée ci-dessus semble trop compliquée uniquement parce qu'elle est capable de gérer la sortie de différentes versions de nslookup. Android inclut une version minimale de nslookup dans busybox mais il existe également une version autonome (souvent incluse dans dnsutils).

15
Six

Sur Android 7 ça marche:

 ip route get 8.8.8.8

la sortie sera: 8.8.8.8 via passerelle ...

4
user278801

Aller au terminal

$ adb -s UDID Shell
$ ip addr | grep inet 
or
$ netcfg | grep inet
4
Daz

Le serveur DNS est obtenu via

getprop net.dns1 

MISE À JOUR: à partir d'Android Nougat 7.x, ifconfig est présent et netcfg est parti. Donc ifconfig peut être utilisé pour trouver l'adresse IP et le masque de réseau. 

2
kevinf

Installez l'application d'émulateur de terminal, puis pour voir la table de routage exécuter iproute à partir de la commande Invite. Ne nécessite pas d'autorisations root. Je ne sais pas comment obtenir le serveur DNS. Il n'y a pas de fichier /etc/resolv.conf. Vous pouvez essayer nslookup www.google.com et voir ce qu'il signale pour votre serveur, mais sur mon téléphone, il signale 0.0.0.0, ce qui n'est pas très utile.

0
Kipp Cannon

Cette solution vous donnera les paramètres du réseau. Découvrez cette solution

0
Muhammad Zeeshan