我已经获得了连接到特定接入点所需的所有详细信息。 我必须只使用该接入点,因此我需要的是执行此操作的命令。
我已经获得了连接到特定接入点所需的所有详细信息。 我必须只使用该接入点,因此我需要的是执行此操作的命令。
虽然迟到了,但我想出了一种在没有root的设备上实现此功能的方法。
可能不太美观,但是它能够工作。
基本上,我的建议是创建一个应用程序,根据启动应用程序时给出的EXTRAS
来加入访问点。然后使用am
命令的-e <KEY> <VALUE>
参数提供EXTRAS
。
我已经构建了一个这样做的应用程序,它可以在此处找到: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获取更多信息。
希望对某些人有所帮助。
你可以在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)"
wpa_passphrase ssid passphrase
,将输出内容复制到Android设备上。这在我的三星平板电脑上运行良好。 - wojciiisvc wifi disable
和 svc wifi enable
命令,而不是在设置中切换。 - ony您可以使用以下命令adb shell cmd -w wifi connect-network(带有这些参数)
- connect-network open|owe|wpa2|wpa3 [] [-m] [-d] [-b ] [-r auto|none|persistent|non_persistent] 使用提供的参数连接到网络并将其添加到已保存的网络列表中。 open|owe|wpa2|wpa3 - 网络的安全类型。 - 网络的SSID -对于没有密码的网络,请使用“open”或“owe” - 'open' - 开放式网络(最常见) - 'owe' - 增强型开放式网络 - 对于具有密码的网络,请使用“wpa2”或“wpa3” - 'wpa2' - WPA-2 PSK网络(最常见) -m - 标记网络计量。 - 'wpa3' - WPA-3 PSK网络 -d - 标记禁用网络自动加入。 -h - 标记隐藏网络。 -p - 标记网络为私人(不共享)。 -b - 设置特定的BSSID。 -r auto|none|persistent|non_persistent - MAC随机化方案,用于该网络。
要连接到wpa2验证且密码为“qwertyuiop”的WiFi网络“Home”,请使用以下命令:
adb shell cmd -w wifi connect-network Home wpa2 qwertyuiop
连接到一个名为“Public”的开放式WiFi网络,请使用以下方法
adb shell cmd -w wifi connect-network Public open
adb shell cmd wifi
,不需要加上 -w
。 - lambdaadb shell cmd wifi connect-network 'FRITZ!Box\ 3423' wpa2 password123
。 - ir2pidadb 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'"
虽然有点晚了,但我希望这篇文章能对那些遇到此问题的人有所帮助。
如果您正在尝试使用adb pull方法,但收到“远程对象不存在”的消息,请尝试以下操作:
在同一个命令提示框中,
adb root
以以root身份重新启动adb。 点击回车。adb shell
,点击回车。确保提示显示为root@[device]:
cd /data/misc/wifi
,点击回车。cat wpa_supplicant.conf
,点击回车。这将会将您的手机之前连接的WiFi数据转储到您的PC屏幕上。
这些命令在我的未root设备上运行时遇到“远程对象不存在”问题后也可以正常工作。
adb pull /data/misc/wifi/wpa_supplicant.conf ~/Desktop
,然后编辑文件,添加网络模块,我的整个配置文件如下:##### 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
}
然后删除原文件,将其推送到/data/misc/wifi
文件夹中,重新启动设备。请注意,不同的设备在网络线上方具有不同的内容,请勿修改该部分。