GNU/Linux >> Znalost Linux >  >> Linux

Připojení k WiFi pomocí adb shell

Síťovou položku můžete přidat do souboru wpa_supplicant.conf sami (nebo v rámci vašeho skriptu) V zásadě se připojte ručně jednou a poté postupujte takto:

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

a integrujte síťovou položku do skriptu pro automatizaci. Příklad jednoduchého skriptu:

#!/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)"

Na večírek je pozdě, ale přišel jsem na způsob, jak toho dosáhnout na zařízení bez root .

Možná to není hezké, ale funguje to.

V podstatě to, co navrhuji, je vytvořit aplikaci, která se připojí k přístupovému bodu na základě EXTRAS daný při spuštění aplikace. EXTRAS jsou pak poskytovány pomocí am příkaz -e <KEY> <VALUE> parametr.

Už jsem vytvořil aplikaci, která to dělá, a je k dispozici zde:https://github.com/steinwurf/adb-join-wifi

Jakmile je aplikace nainstalována, lze připojit přístupový bod wifi pomocí následujícího ADB příkaz:

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

Více informací je v README na Github.

Doufám, že to někomu pomůže.


Linux
  1. Který shell používám?

  2. Jak otestovat, jaký Shell používám v terminálu?

  3. Neočekávané chování skriptu Shell?

  1. Přednost logických operátorů Shell &&, ||?

  2. Skript Shell visí na příkazu Mail?

  3. Používáte export v .bashrc?

  1. Jak vytvořit animaci rotace pomocí skriptu Shell?

  2. Použití případových prohlášení v Bash

  3. Upravte skript shellu, když je spuštěn