Подтвердить что ты не робот

Подключение к wi-fi с использованием оболочки adb

У меня есть все детали для подключения к определенной точке доступа. Я должен использовать только эту точку доступа, поэтому мне нужна только команда.

4b9b3361

Ответ 1

Вы можете добавить сетевую запись в wpa_supplicant.conf самостоятельно (или в свой script). По существу подключайте вручную один раз, затем выполните:

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

и интегрируйте сетевой вход в script для автоматизации. Пример простой 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

Поздно к вечеринке, но я придумал способ выполнить это на устройстве без root.

Это может быть не очень красиво, но оно работает.

В основном я предлагаю создать приложение, которое присоединяется к точке доступа на основе EXTRAS, заданной при запуске приложения. Затем EXTRAS предоставляется с использованием параметра am command -e <KEY> <VALUE>.

Я уже создаю приложение, которое делает это и доступно здесь: https://github.com/steinwurf/adb-join-wifi

Как только приложение будет установлено, точка доступа Wi-Fi может быть объединена с помощью следующей команды 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]

Там больше информации в README на Github.

Надеюсь, что это поможет кому-то.

Ответ 3

В качестве дополнения: вы можете включить wifi через svc с правами root на устройстве

svc wifi enable

и отключить через

svc wifi disable

Ответ 4

Как еще одно дополнение: хотя мое устройство было укоренено, я получил remote object ''/data/misc/wifi/wpa_supplicant.conf'' does not exist при попытке выполнить adb pull. Это происходит потому, что 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'"

Ответ 5

супер поздно, но я надеюсь, что это поможет любому, кто может наткнуться на эту тему.

если вы пытаетесь использовать метод adb pull, но получили "удаленный объект не существует", попробуйте следующее:

в том же окне командной строки,

  • введите adb root, чтобы перезапустить adb как root. нажмите кнопку ввода.
  • Теперь введите adb shell, нажмите "Enter". убедитесь, что в подсказке отображается [email protected][device]:
  • В поле # prompt type cd /data/misc/wifi нажмите enter.
  • Наконец, введите cat wpa_supplicant.conf нажмите "Enter".

это должно сбрасывать данные Wi-Fi, с которыми вы ранее подключались на вашем телефоне, на ваш ПК.

эти команды работали на моем неуправляемом устройстве после запуска в "удаленный объект не существует".

Ответ 6

Я решаю проблему следующим образом: 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, перезагрузите устройство. Обратите внимание, что у другого устройства есть другой контент над сетевой линией, не изменяйте эту часть.