web-dev-qa-db-fra.com

Connexion au Wi-Fi à l'aide du shell ADB

J'ai tous les détails pour me connecter à un point d'accès particulier. Je dois utiliser ce point d'accès uniquement, donc tout ce dont j'ai besoin est la commande pour le faire.

22
Rohan

Vous pouvez ajouter une entrée réseau dans le wpa_supplicant.conf vous-même (ou dans votre script) Connectez-vous essentiellement manuellement une fois, puis procédez comme suit:

adb pull /data/misc/wifi/wpa_supplicant.conf

et intégrez l'entrée réseau dans votre script pour l'automatisation. Exemple de script simple:

#!/bin/bash
#

# Get this information by connecting manually once, and do
#   adb pull /data/misc/wifi/wpa_supplicant.conf
ADB_PULL="adb pull /data/misc/wifi/wpa_supplicant.conf"
WIRELESS_CTRL_INTERFACE=wlan0
WIRELESS_SSID=Gondolin
WIRELESS_KEY_MGMT="WPA-EAP IEEE8021X"
WIRELESS_EAP=PEAP
WIRELESS_USER=Turgon
WIRELESS_PASSWORD=IdrilCelebrindal

adb start-server
adb wait-for-device
echo "adb connection....[CONNECTED]"
adb root
adb wait-for-device
adb remount
adb wait-for-device

pushd /tmp
rm wpa_supplicant.conf 2>/dev/null # Remove any old one
adbpull_status=`$ADB_PULL 2>&1`
echo -e "\nAttempting: $ADB_PULL"
if [ `echo $adbpull_status | grep -wc "does not exist"` -gt 0 ]; then
    echo "  wpa_supplicant.conf does not exist yet on your device yet."
    echo "This means you have not used your wireless yet."
    echo ""
    echo "Taking our best shot at creating this file with default config.."

    echo "ctrl_interface=$WIRELESS_CTRL_INTERFACE" >> wpa_supplicant.conf
    echo "update_config=1" >> wpa_supplicant.conf
    echo "device_type=0-00000000-0" >> wpa_supplicant.conf
else
    echo $adbpull_status
    echo "  wpa_supplicant.conf exists!"
fi

echo ""
echo "Add network entry for wpa_supplicant.conf.."
echo "" >> wpa_supplicant.conf
echo "network={" >> wpa_supplicant.conf
echo "  ssid=\"$WIRELESS_SSID\"" >> wpa_supplicant.conf
echo "  key_mgmt=$WIRELESS_KEY_MGMT" >> wpa_supplicant.conf
echo "  eap=$WIRELESS_EAP" >> wpa_supplicant.conf
echo "  identity=\"$WIRELESS_USER\"" >> wpa_supplicant.conf
echo "  password=\"$WIRELESS_PASSWORD\"" >> wpa_supplicant.conf
echo "  priority=1" >> wpa_supplicant.conf
echo "}" >> wpa_supplicant.conf
echo "Pushing wpa_supplicant.conf.."
adb Push wpa_supplicant.conf /data/misc/wifi/wpa_supplicant.conf
popd #/tmp

adb Shell chown system.wifi /data/misc/wifi/wpa_supplicant.conf
adb Shell chmod 660 /data/misc/wifi/wpa_supplicant.conf

echo ""
echo "Finished!"
adb Shell am start -a Android.intent.action.MAIN -n com.Android.settings/.Settings
echo "Please toggle wifi off/on now.. (ifconfig not sufficient, monkey this)"
26
Bryan Buckley

Tard dans la fête, mais j'ai trouvé un moyen d'accomplir cela sur un appareil sans root .

Ce n'est peut-être pas joli, mais ça marche.

Fondamentalement, ce que je propose est de créer une application qui rejoint un point d'accès basé sur EXTRAS donné lors du démarrage de l'application. Les EXTRAS sont ensuite fournis en utilisant am de la commande -e <KEY> <VALUE> paramètre.

J'ai déjà créé une application qui le fait et elle est disponible ici: https://github.com/steinwurf/adb-join-wifi

Une fois l'application installée, un point d'accès wifi peut être joint à l'aide de la commande ADB suivante:

adb Shell am start -n com.steinwurf.adbjoinwifi/com.steinwurf.adbjoinwifi.MainActivity -e ssid [SSID] -e password_type [PASSWORD_TYPE] -e password [WIFI PASSWORD]

Il y a plus d'informations dans le README sur Github.

J'espère que cela aide quelqu'un.

18
jpihl

En complément: vous pouvez activer le wifi via svc en tant que root sur l'appareil

svc wifi enable

et désactiver via

svc wifi disable
7
serv-inc

Comme un autre module complémentaire: bien que mon appareil soit enraciné, j'ai obtenu remote object ''/data/misc/wifi/wpa_supplicant.conf'' does not exist erreur lors de la tentative d'exécution adb pull. Cela se produit parce que adb lui-même ne fonctionne pas en mode ROOT. Pour contourner ce problème, vous pouvez exécuter quelque chose comme ceci

adb Shell "su -c 'cp -R /data/misc/wifi/wpa_supplicant.conf /data/misc/wpa_supplicant.conf'"
adb Shell "su -c 'chmod -R 777 /data/misc/wpa_supplicant.conf'"
adb pull /data/misc/wpa_supplicant.conf
adb Shell "su -c 'rm /data/misc/wpa_supplicant.conf'"
2
Maxim Sultakov

super tard mais j'espère que cela aidera quiconque peut tomber sur ce fil.

si vous essayez la méthode d'adb pull mais que vous avez reçu "l'objet distant n'existe pas", essayez ceci:

dans la même boîte d'invite de commandes,

  • tapez adb root pour redémarrer adb en tant que root. cliquez sur entrer.
  • Tapez maintenant adb Shell, cliquez sur Entrée. s'assure que l'invite affiche root@[device]:
  • À l'invite #, tapez cd /data/misc/wifi cliquez sur entrée.
  • Enfin, saisissez cat wpa_supplicant.conf cliquez sur entrée.

cela devrait vider les données du WiFi auquel vous vous êtes déjà connecté sur votre téléphone, sur l'écran de votre PC.

ces commandes ont fonctionné sur mon appareil non rooté après avoir rencontré le problème "l'objet distant n'existe pas".

2
sarah

Je résous le problème par ceci: adb pull /data/misc/wifi/wpa_supplicant.conf ~/Desktop, puis éditez le fichier, ajoutez le module réseau, tout mon fichier de conf est:

##### wpa_supplicant configuration file template #####
update_config=1
ctrl_interface=DIR=/data/system/wpa_supplicant GROUP=wifi
eapol_version=1
ap_scan=1
fast_reauth=1
network={
    ssid="your ssid"
    psk="your pswd"
    key_mgmt=WPA-PSK
    priority=241
}

Ensuite, rm le fichier d'origine, ajoutez le pousser à /data/misc/wifi dossier, redémarrez votre appareil.Veuillez noter que différents appareils ont un contenu différent au-dessus de la ligne réseau , ne modifiez pas cette partie.

1
yanzi1225627