2012-01-03 59 views
19

tengo todos los detalles para conectarse a un punto de acceso particular. Tengo que usar ese punto de acceso solamente, así que todo lo que necesito es el comando para hacerlo.de conexión a Wi-Fi usando adb shell

+0

¿Qué desea lograr? –

+1

Tengo que automatizar algunas cosas que solo funcionan con wi-fi. Puedo usar monkey y hacer clic en configuración-> etc., pero lo último sería cómo elegir la red ABC ya que puede haber más de una red disponible . por lo que si pudiera conseguir un comando, puedo hacer que el uso de SSID y la contraseña de inmediato :) – Rohan

+0

Para complementar la respuesta: http://stackoverflow.com/questions/10282484/android-adb-turn-on-wifi- via-adb – EthraZa

Respuesta

23

Usted puede agregar una entrada de red en el mismo wpa_supplicant.conf (o dentro de la secuencia de comandos) Esencialmente conectar manualmente una vez, y luego hacer:

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

e integrar la entrada de red en la secuencia de comandos para la automatización. Ejemplo simple script:

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

Uno sólo podría utilizar: 'wpa_passphrase SSID passphrase' en una caja de Ubuntu y copiar la salida al dispositivo Android. Me ha funcionado en una tableta de Samsung. – wojciii

+3

Esto solo funciona en dispositivos rooteados. – vent

+4

Sí para dispositivos rooteados. Pero realmente me ayudó a desbloquear mis dispositivos. Muchas gracias por los caminos útiles. En lugar de alternar entre las configuraciones, utilicé 'svc wifi disable' y luego' svc wifi enable'. – ony

6

Como un add-on: puede habilitar la conexión Wi-Fi a través de svc como root en el dispositivo

svc wifi enable 

y desactivar a través de

svc wifi disable 
+0

Esto requiere que el dispositivo sea rooteado y no deberíamos sugerir a los usuarios que rooteen el dispositivo por razones de seguridad. – CodeFlash

+0

@ RajA.P .: Gracias por los comentarios. Aparentemente todos los métodos excepto [@jpihl] (https://stackoverflow.com/a/37303412/1587329) requieren que el dispositivo sea rooteado, simplemente no dicen esto explícitamente. Si el voto a favor fue de usted: ¿los votó negativamente a todos? –

+0

He intentado con los comandos anteriores que me dicen que el dispositivo se ha rooteado y estoy usando mi dispositivo empresarial, lo que no quiero comprometer. – CodeFlash

2

Como otro complemento -on: aunque se basaba mi dispositivo llegué remote object ''/data/misc/wifi/wpa_supplicant.conf'' does not exist error al intentar ejecutar adb pull. Sucede porque adb no se ejecuta en modo ROOT. Para trabajar alrededor de este se puede ejecutar algo como esto

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'" 
12

tarde a la fiesta, pero se le ocurrió una manera de lograr esto en un dispositivo sin raíz.

Puede que no sea bonita, 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 se proporcionan a continuación, utilizando el parámetro del comando am-e <KEY> <VALUE>.

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

Una vez instalada la aplicación, un punto de acceso Wi-Fi se puede unir con el ADB siguiente 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 archivo README en Github.

Espero que ayude a alguien.

+0

Gracias por esto - gran idea! –

1

que resuelve el problema por esto: adb pull /data/misc/wifi/wpa_supplicant.conf ~/Desktop, y luego editar el archivo, agregue el módulo de red, mi archivo conf conjunto es:

##### 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 
} 

Entonces rmar el archivo de origen, agregue lo empuja al /data/misc/wifi carpeta, reinicie su dispositivo. Tenga en cuenta que los diferentes dispositivos tienen diferente contenido por encima de la línea de red, no modifique esa parte.

+0

esto solo funciona en dispositivos rooteados – user2340356

2

super tarde pero espero que esto ayude a alguien que puede tropezar con este hilo.

si está tratando el método de extracción ADB pero recibió "objeto remoto no existe", intente esto:

en la misma caja símbolo del sistema,

  • tipo adb root para reiniciar ADB como root . haga clic en entrar.
  • Ahora escriba adb shell, haga clic en entrar. se asegura de los espectáculos prontas [email protected][device]:
  • En el símbolo # cd /data/misc/wifi clic en Entrar.
  • Por último escriba cat wpa_supplicant.conf haga clic en Entrar.

esto debería volcar los datos de WiFi a los que se había conectado anteriormente en su teléfono, a la pantalla de su PC.

estos comandos trabajaron en mi dispositivo sin raíces después de correr en el “objeto remoto no existe” tema.

+0

C: \ Archivos de programa (x86) \ ADB mínima y Fastboot> adb shell .......................... .............................. shell @ android:/$ cd/data/misc/wifi ...... ....................................... ......... ........... .................... ........... /system/bin/sh: cd:/data/misc/wifi: Permiso denegado ................................... ................... ............. 2 | shell @ android:/$ cat wpa_supplicant.conf ..................................... .... .................... .................. – user2340356

+0

/system/bin/sh: cat: wpa_supplicant.conf: No hay tal archivo o directorio ................................... .............. 1 | shell @ android:/$ cd/data/misc/wifi .................... ......................... ....................... ......................... /system/bin/sh: cd:/data/misc/wifi: Permiso denegado ...... ................................................ ......... – user2340356

+0

eso es lo que obtengo cuando ejecuto esos comandos :(. Tengo una cámara samsung galaxy. Versión Android 4.1.2. Tal vez haya un error de seguridad y puedo usarlo y recuperar el contraseñas wifi? – user2340356

Cuestiones relacionadas