linux - 在Raspberry Pi/Ubuntu/Debian中使用shell程序动态切换WiFi

标签 linux shell ubuntu debian raspberry-pi

如何在 shell 脚本中检查系统是否连接到 WiFi-1,如果未连接,则连接到 WiFi-2?我尝试使用 wpa_supplicant 和接口(interface)配置,但没有按预期工作。我跟着这个tutorial

如果有任何其他方法可以做到这一点,请告诉我。

/etc/network/interfaces 文件

auto eth0
iface eth0 inet6 manual
    pre-up ip link set dev eth0 up || true
    wpa-iface eth0
    wpa-driver wired
    wpa-conf /etc/wpa_supplicant/wpa_supplicant_wired.conf
    pre-down /etc/netplug/netplug eth0 out >/dev/null 2>&1 || true
    post-down ip link set dev eth0 down || true

auto wlan0
iface wlan0 inet manual
      pre-up ip link set dev wlan0 up || true
      wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
      wpa-driver wext
      pre-down /etc/netplug/netplug wlan0 out >/dev/null 2>&1 || true
      post-down ip link set dev wlan0 down || true

# open is specific (IPv6 only) so I just stop dhcp via netplug
iface open inet manual
      up   /etc/netplug/netplug wlan0 out >/dev/null 2>&1 || true

iface default inet manual
      up   /etc/netplug/netplug wlan0 in  >/dev/null 2>&1 || true
      down /etc/netplug/netplug wlan0 out >/dev/null 2>&1 || true

最佳答案

我想您现在可能已经找到了解决方案。无论如何,作为解决方法,您可以安装网络管理器(支持所有 debian 发行版,包括 ubuntu/raspbian/etc)

sudo apt-get install network-manager

然后将所需的网络配置添加到/etc/NetworkManager/system-connections 文件夹。 wifi 网络连接的示例配置如下:

[connection]
id=milanWiFi
uuid=56439211-1067-4334-b199-b73ceed32d83
type=802-11-wireless

[802-11-wireless]
ssid=milanWiFi
mode=infrastructure
mac-address=84:3A:4B:9B:CF:66
security=802-11-wireless-security

[802-11-wireless-security]
key-mgmt=wpa-psk
auth-alg=open
psk=milan123

[ipv4]
method=auto

[ipv6]
method=auto

这里,id 是您连接的唯一名称,您可以通过调用获取 uuiduuidgen 命令在控制台中。 为了获得可用的 wifi 连接,您可以使用

sudo iw dev wlan0 scan

在那里您可以看到有关连接的相关详细信息。您要做的是从中获取详细信息并创建配置文件。

关于linux - 在Raspberry Pi/Ubuntu/Debian中使用shell程序动态切换WiFi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25635301/

相关文章:

linux - 当进程终止时内核是否删除打开的文件

linux - sed 找不到 '0A' 控制字符

bash - sh: 如何扩展环境变量?

ubuntu - 如何在 Ubuntu -2021 上更新 VSCode

linux - 用于删除和覆盖文件的脚本

linux - 如何恢复 Jenkins 密码

linux - Bash 脚本启动程序并在给定时间退出

python - 在后台运行 Python 脚本

ubuntu - 如何为 Ubuntu 设置显示变量

sql - Rails 控制台和 Rails 服务器日志中输出的颜色是什么意思?