web-dev-qa-db-ja.com

adbシェルを使用してWi-Fiに接続する

特定のアクセスポイントに接続するためのすべての詳細があります。そのアクセスポイントのみを使用する必要があるため、必要なのはコマンドを実行することだけです。

22
Rohan

ネットワークエントリを自分で(またはスクリプト内で)wpa_supplicant.confに追加できます。基本的に手動で1回接続してから、次の操作を行います。

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)"
26
Bryan Buckley

パーティーに遅れましたが、デバイスでこれを実現する方法を思いつきましたルートなし

きれいではないかもしれませんが、動作します。

基本的に、私が提案するのは、アプリの起動時に指定されたEXTRASに基づいてアクセスポイントに参加するアプリを作成することです。 EXTRASは、amコマンドの-e <KEY> <VALUE>パラメータ。

私はすでにそうするアプリを構築しており、ここで利用可能です: https://github.com/steinwurf/adb-join-wifi

アプリをインストールしたら、次のADBコマンドを使用してwifiアクセスポイントに参加できます。

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に詳細があります。

それが誰かを助けることを願っています。

18
jpihl

アドオンとして:デバイスのルートとして svc 経由でwifiを有効にできます

svc wifi enable

経由で無効にする

svc wifi disable
7
serv-inc

別のアドオンとして:デバイスがルート化されていても、remote object ''/data/misc/wifi/wpa_supplicant.conf'' does not exist実行しようとしているときにエラーadb pulladb自体が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'"
2
Maxim Sultakov

超遅いですが、これがこのスレッドにつまずくかもしれない人を助けることを願っています。

adb pullメソッドを試しているが、「リモートオブジェクトが存在しない」というメッセージを受け取った場合は、これを試してください:

同じコマンドプロンプトボックスで、

  • adb rootと入力して、adbをルートとして再起動します。 Enterをクリックします。
  • adb Shellと入力し、Enterをクリックします。プロンプトにroot@[device]:が表示されることを確認します
  • #プロンプトでcd /data/misc/wifiと入力してEnterをクリックします。
  • 最後にcat wpa_supplicant.confと入力してEnterをクリックします。

これにより、以前に電話で接続したWiFiのデータがPC画面にダンプされます。

これらのコマンドは、「リモートオブジェクトが存在しない」問題に遭遇した後、ルート化されていないデバイスで機能しました。

2
sarah

私はこれで問題を解決します: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
}

次に、Originファイルをrmし、Pushを/data/misc/wifiフォルダーに追加して、デバイスを再起動します。異なるデバイスにはネットワークラインより上のコンテンツがあります。その部分は変更しないでください。

1
yanzi1225627