2012-01-03 116 views
19

我擁有所有連接到特定接入點的詳細信息。我只能使用該接入點,所以我需要的只是執行該命令的命令。使用adb外殼連接到wi-fi

+0

你想實現什麼? – 2012-01-03 07:03:11

+1

我必須自動化一些只能使用wi-fi的東西。我可以使用猴子並點擊設置 - >等,但最後一件事是我如何選擇網絡ABC,因爲可能有多個網絡可用。所以如果我能得到一個命令,我可以做到這一點使用SSID和密碼:) – Rohan 2012-01-03 07:05:48

+0

爲了補充答案: http://stackoverflow.com/questions/10282484/android-adb-turn-on-wifi- via-adb – EthraZa 2013-03-15 20:12:29

回答

23

您可以添加網絡進入的wpa_supplicant.conf自己(或你的腳本中)本質上手動連接一次,然後執行:

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

和整合網絡進入你的腳本的自動化。實施例簡單的腳本:

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

可以使用:在Ubuntu盒子上使用'wpa_passphrase ssid passphrase'並複製輸出到android設備。它在三星平板電腦上爲我工作。 – wojciii 2012-08-11 11:22:01

+3

這隻適用於有根設備。 – vent 2012-10-08 21:19:23

+4

是,對於有根設備。但它確實幫助我解鎖我的設備。非常感謝您提供有用的路徑。而不是切換設置我使用'svc wifi禁用'然後'svc wifi enable'。 – ony 2014-08-12 13:40:00

6

作爲一個附加的: 可以將設備

svc wifi enable 

上使能經由svc的WiFi如根和經由

svc wifi disable 
+0

這需要設備被植入,並且由於安全原因,我們不應該建議用戶對設備進行根目錄。 – CodeFlash 2017-08-02 08:09:15

+0

@ RajA.P .:感謝您的反饋。看似除[@jpihl](https://stackoverflow.com/a/37303412/1587329)之外的所有方法都需要設備根植,他們只是沒有明確地說明這一點。如果downvote是從你那裏得到的:你是否全部倒下了它們? – 2017-08-02 09:47:00

+0

我曾嘗試上述命令說我的設備是根植,我使用我的企業設備,我不想妥協。 – CodeFlash 2017-08-02 10:30:03

2

禁用作爲另一個附加-on:雖然我的設備已經紮根,但在嘗試執行adb pull時,出現了 remote object ''/data/misc/wifi/wpa_supplicant.conf'' does not exist錯誤。發生這種情況是因爲adb本身不能以ROOT模式運行。若要此你身邊可以這樣

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

遲到了執行的東西,但我想出了一個辦法做到這一點的設備上沒有根

它可能不漂亮,但它的工作原理。

基本上我建議創建一個應用程序,該應用程序基於啓動應用程序時給出的EXTRAS加入接入點。 然後使用am命令的-e <KEY> <VALUE>參數提供EXTRAS

我已經建立一個應用程序,它這樣做,它是可以在這裏找到:https://github.com/steinwurf/adb-join-wifi

一旦安裝了該應用,WiFi接入點可以使用以下ADB命令加入:

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

還有更多Github上的README信息。

希望它可以幫助別人。

+0

謝謝你 - 好主意! – 2017-04-18 21:43:01

1

我用這個解決的問題: adb pull /data/misc/wifi/wpa_supplicant.conf ~/Desktop,然後編輯這個文件,添加網絡模塊,我的整個的conf文件是:

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

然後RM原始文件,添加它推到/data/misc/wifi文件夾,請重新啓動您的設備。請注意,不同的設備在網絡線上方有不同的內容,請勿修改該部分。

+0

這隻適用於有根設備 – user2340356 2017-08-19 17:25:22

2

超晚,但我希望這可以幫助任何人可能偶然發現此線程。

如果你想在亞行拉法卻收到「遠程對象不存在」,試試這個:

在同一個命令提示框

  • adb root重新啓動亞行根。點擊進入。
  • 現在鍵入adb shell,點擊輸入。確保提示顯示[email protected][device]:
  • 在#提示符下輸入cd /data/misc/wifi點擊輸入。
  • 最後輸入cat wpa_supplicant.conf點擊輸入。

這應該轉儲你以前連接到你的手機的WiFi數據到你的電腦屏幕上。

在運行到「遠程對象不存在」問題後,這些命令對我的無根設備起作用。

+0

C:\ Program Files(x86)\ Minimal ADB和Fastboot> adb shell .......................... .............................. shell @ android:/ $ cd/data/misc/wifi ...... ....................................... ......... ........... .................... ........... /system/bin/sh:cd:/ data/misc/wifi:權限被拒絕................................... ................... ............. 2 | shell @ android:/ $ cat wpa_supplicant.conf ..................................... .... .................... .................. – user2340356 2017-08-19 19:50:58

+0

/system/bin/sh:cat:wpa_supplicant.conf:沒有這樣的文件或目錄................................... .............. 1 | shell @ android:/ $ cd/data/misc/wifi .................... ......................... ....................... ......................... /system/bin/sh:cd:/ data/misc/wifi:Permission denied ...... ................................................ ......... – user2340356 2017-08-19 19:52:07

+0

這就是當我運行這些命令:(我有一個三星galaxy相機。android版本4.1.2。也許有一個安全bug,我可以使用它並檢索wifi密碼? – user2340356 2017-08-19 19:52:38