GNU/Linux >> Tutoriales Linux >  >> Linux

Conexión a WiFi usando adb shell

Puede agregar una entrada de red en wpa_supplicant.conf usted mismo (o dentro de su secuencia de comandos). Esencialmente, conéctese manualmente una vez, luego haga:

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

e integre la entrada de la red en su script para la automatización. Ejemplo de secuencia de comandos 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)"

Llegó tarde a la fiesta, pero se me ocurrió una manera de lograr esto en un dispositivo sin root .

Puede que no sea bonito, pero funciona.

Básicamente lo que propongo es crear una aplicación que se una a un punto de acceso basado en EXTRAS dado al iniciar la aplicación. El EXTRAS luego se proporcionan usando el am comando -e <KEY> <VALUE> parámetro.

Ya construí una aplicación que lo hace y está disponible aquí:https://github.com/steinwurf/adb-join-wifi

Una vez que la aplicación está instalada, se puede unir un punto de acceso wifi usando el siguiente ADB comando:

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

Hay más información en el LÉAME en Github.

Espero que ayude a alguien.


Linux
  1. ¿Qué shell estoy usando?

  2. ¿Cómo probar qué Shell estoy usando en una terminal?

  3. ¿Cómo usar el comando su sobre adb shell?

  4. linux shell wc -c cuenta caracteres +1

  5. ¿Qué hace % en las cadenas de shell de Linux?

Haz que tu caparazón de pescado sea hermoso con Oh My Fish

¿Usando exportar en .bashrc?

¿Cómo crear una animación de rotación usando Shell Script?

Envío de correo HTML usando un script de shell

Verifique la conectividad de la base de datos usando el script Shell

Biblioteca de salida de scripts de shell de colores