使用 adb shell 连接 WiFi

2024-10-24 08:51:00
admin
原创
89
摘要:问题描述:我拥有连接到特定接入点的所有详细信息。我只需使用该接入点,因此我所需要的只是执行该操作的命令。解决方案 1:虽然迟到了,但我想到了一种在没有 root 的设备上实现这一目标的方法。它可能不漂亮,但它确实有效。基本上,我建议创建一个应用程序,根据EXTRAS启动应用程序时给出的信息加入接入点。然后使用...

问题描述:

我拥有连接到特定接入点的所有详细信息。我只需使用该接入点,因此我所需要的只是执行该操作的命令。


解决方案 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=&quot;adb pull /data/misc/wifi/wpa_supplicant.conf&quot;
WIRELESS_CTRL_INTERFACE=wlan0
WIRELESS_SSID=Gondolin
WIRELESS_KEY_MGMT=&quot;WPA-EAP IEEE8021X&quot;
WIRELESS_EAP=PEAP
WIRELESS_USER=Turgon
WIRELESS_PASSWORD=IdrilCelebrindal

adb start-server
adb wait-for-device
echo &quot;adb connection....[CONNECTED]&quot;
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>&amp;1`
echo -e &quot;
Attempting: $ADB_PULL&quot;
if [ `echo $adbpull_status | grep -wc &quot;does not exist&quot;` -gt 0 ]; then
    echo &quot;  wpa_supplicant.conf does not exist yet on your device yet.&quot;
    echo &quot;This means you have not used your wireless yet.&quot;
    echo &quot;&quot;
    echo &quot;Taking our best shot at creating this file with default config..&quot;
    
    echo &quot;ctrl_interface=$WIRELESS_CTRL_INTERFACE&quot; >> wpa_supplicant.conf
    echo &quot;update_config=1&quot; >> wpa_supplicant.conf
    echo &quot;device_type=0-00000000-0&quot; >> wpa_supplicant.conf
else
    echo $adbpull_status
    echo &quot;  wpa_supplicant.conf exists!&quot;
fi

echo &quot;&quot;
echo &quot;Add network entry for wpa_supplicant.conf..&quot;
echo &quot;&quot; >> wpa_supplicant.conf
echo &quot;network={&quot; >> wpa_supplicant.conf
echo &quot;  ssid=\&quot;$WIRELESS_SSID\&quot;&quot; >> wpa_supplicant.conf
echo &quot;  key_mgmt=$WIRELESS_KEY_MGMT&quot; >> wpa_supplicant.conf
echo &quot;  eap=$WIRELESS_EAP&quot; >> wpa_supplicant.conf
echo &quot;  identity=\&quot;$WIRELESS_USER\&quot;&quot; >> wpa_supplicant.conf
echo &quot;  password=\&quot;$WIRELESS_PASSWORD\&quot;&quot; >> wpa_supplicant.conf
echo &quot;  priority=1&quot; >> wpa_supplicant.conf
echo &quot;}&quot; >> wpa_supplicant.conf
echo &quot;Pushing wpa_supplicant.conf..&quot;
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 &quot;&quot;
echo &quot;Finished!&quot;
adb shell am start -a android.intent.action.MAIN -n com.android.settings/.Settings
echo &quot;Please toggle wifi off/on now.. (ifconfig not sufficient, monkey this)&quot;

解决方案 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”
           - &#039;wpa2&#039; - WPA-2 PSK 网络(最流行)
    -m – 标记网络计量。
           - &#039;wpa3&#039; - 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 &#039;&#039;/data/misc/wifi/wpa_supplicant.conf&#039;&#039; does not exist在尝试执行时遇到错误adb pull。发生这种情况是因为adb它本身不在 ROOT 模式下运行。要解决此问题,您可以执行类似下面的操作

adb shell &quot;su -c &#039;cp -R /data/misc/wifi/wpa_supplicant.conf /data/misc/wpa_supplicant.conf&#039;&quot;
adb shell &quot;su -c &#039;chmod -R 777 /data/misc/wpa_supplicant.conf&#039;&quot;
adb pull /data/misc/wpa_supplicant.conf
adb shell &quot;su -c &#039;rm /data/misc/wpa_supplicant.conf&#039;&quot;

解决方案 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=&quot;your ssid&quot;
    psk=&quot;your pswd&quot;
    key_mgmt=WPA-PSK
    priority=241
}

然后 rm 源文件,将其推送到/data/misc/wifi文件夹,重启设备。请注意,不同的设备在网络线路上方的内容不同,请不要修改该部分。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用