使用 adb shell 连接 WiFi

2024-10-24 08:51:00
admin
原创
451
摘要:问题描述:我拥有连接到特定接入点的所有详细信息。我只需使用该接入点,因此我所需要的只是执行该操作的命令。解决方案 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文件夹,重启设备。请注意,不同的设备在网络线路上方的内容不同,请不要修改该部分。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2599  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1556  
  IPD(Integrated Product Development)流程作为一种先进的产品开发管理模式,在众多企业中得到了广泛应用。其中,技术评审与决策评审是IPD流程中至关重要的环节,它们既有明显的区别,又存在紧密的协同关系。深入理解这两者的区别与协同,对于企业有效实施IPD流程,提升产品开发效率与质量具有重要意义...
IPD管理流程   38  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、ClickUp、Freshdesk、GanttPRO、Planview、Smartsheet、Asana、Nifty、HubPlanner、Teamwork。在当今快速变化的商业环境中,项目管理软件已成为企业提升效率、优化资源分配和确保项目按时交付的关键工具。然而...
项目管理系统   32  
  建设工程项目质量关乎社会公众的生命财产安全,也影响着企业的声誉和可持续发展。高质量的建设工程不仅能为使用者提供舒适、安全的环境,还能提升城市形象,推动经济的健康发展。在实际的项目操作中,诸多因素会对工程质量产生影响,从规划设计到施工建设,再到后期的验收维护,每一个环节都至关重要。因此,探寻并运用有效的方法来提升建设工程...
工程项目管理制度   28  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用