GNU/Linux >> Tutoriels Linux >  >> Linux

Connexion au WiFi à l'aide du shell adb

Vous pouvez ajouter une entrée réseau dans wpa_supplicant.conf vous-même (ou dans votre script) Essentiellement, connectez-vous manuellement une fois, puis faites :

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

En retard à 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é au démarrage de l'application. Le EXTRAS sont alors fournis en utilisant le am -e <KEY> <VALUE> de la commande paramètre.

J'ai déjà construit 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 rejoint en utilisant le ADB suivant commande :

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.


Linux
  1. Quel shell est-ce que j'utilise ?

  2. Comment tester quel shell j'utilise dans un terminal ?

  3. Comportement inattendu d'un script shell ?

  4. Priorité des opérateurs logiques Shell &&, ||?

  5. Le script shell se bloque sur la commande de messagerie ?

Rendez votre coquille de poisson magnifique avec Oh My Fish

Utilisation de l'exportation dans .bashrc ?

Modifier le script shell pendant son exécution

Bibliothèque de sortie de script shell coloré

Itérer sur la variable $ PATH à l'aide d'un script shell

Connexion de Linux Mint au réseau WiFi