使用 adb shell 连接 WiFi
- 2024-10-24 08:51:00
- admin 原创
- 90
问题描述:
我拥有连接到特定接入点的所有详细信息。我只需使用该接入点,因此我所需要的只是执行该操作的命令。
解决方案 1:
虽然迟到了,但我想到了一种在没有 root 的设备上实现这一目标的方法。
它可能不漂亮,但它确实有效。
基本上,我建议创建一个应用程序,根据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 中有更多信息。
希望它能对某人有所帮助。
解决方案 2:
您可以自己在 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 "
Attempting: $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)"
解决方案 3:
adb shell cmd -w wifi connect-network
您可以使用带有这些参数的命令
- 连接网络打开|owe|wpa2|wpa3 [] [-m] [-d] [-b ] [-r auto|none|persistent|non_persistent]
使用提供的参数连接到网络并添加到已保存的网络列表
open|owe|wpa2|wpa3 – 网络的安全类型。
- 网络的 SSID
- 对于没有密码的网络,使用“open”或“owe”
- ‘open’ - 开放网络(最普遍)
- ‘欠’ - 增强开放网络
- 对于有密码的网络,请使用“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 网络“家庭”,请使用
adb shell cmd -w wifi connect-network Home wpa2 qwertyuiop
要连接到开放的 WiFi 网络,请使用“公共”
adb shell cmd -w wifi connect-network Public open
解决方案 4:
作为附加功能:您可以通过svc以 root 身份在设备上启用 wifi
svc wifi enable
并通过禁用
svc wifi disable
解决方案 5:
只需使用它即可
连接:
adb shell svc wifi enable
断开:
adb shell svc wifi disable
解决方案 6:
另一个附加功能:虽然我的设备已 root,但我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'"
解决方案 7:
很晚了,但我希望这会对任何偶然发现这个帖子的人有所帮助。
如果您尝试使用 adb pull 方法但收到“远程对象不存在”的提示,请尝试以下操作:
在同一个命令提示符框中,
键入
adb root
以 root 身份重新启动 adb。单击回车。现在输入
adb shell
,点击回车。确保提示符显示root@[device]:
在 # 提示符下
cd /data/misc/wifi
输入并按 Enter。最后输入
cat wpa_supplicant.conf
并按回车键。
这会将您之前在手机上连接的 WiFi 数据转储到您的电脑屏幕上。
在遇到“远程对象不存在”问题后,这些命令在我的未 root 设备上起作用。
解决方案 8:
我通过这个解决了这个问题:
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
}
然后 rm 源文件,将其推送到/data/misc/wifi
文件夹,重启设备。请注意,不同的设备在网络线路上方的内容不同,请不要修改该部分。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件