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.
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)"
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.
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
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'"
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,
adb root
pour redémarrer adb en tant que root. cliquez sur entrer.adb Shell
, cliquez sur Entrée. s'assure que l'invite affiche root@[device]:
cd /data/misc/wifi
cliquez sur entrée.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".
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.