Automatically disconnect from wifi and connect to sharepoint when detected

I'm trying to get my laptop to do this :

if (sharepoint "network_A" is detected):
    connect to "network_A"
elif (wifi "network_B" is detected):
   connect to "network_B"

sharepoint = network_A
wifi = network_B

I tried this :

  • Settings > Connection > network_A > General configuration > Connect automatically with priority > 2
  • Settings > Connection > network_B > General configuration > Connect automatically with priority > 1

But this does not force disconnection from network_B when network_A is detected.

garuda-inxi output :

System:
  Kernel: 5.18.2-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 12.1.0
    parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
    root=UUID=394702fa-734d-4ffe-be2e-fc60fa05f197 rw [email protected]
    quiet splash rd.udev.log_priority=3 vt.global_cursor_default=0
    systemd.unified_cgroup_hierarchy=1
    resume=UUID=6e50783f-d483-49d4-ae7f-6d21a4cb652d loglevel=3
  Desktop: KDE Plasma v: 5.24.5 tk: Qt v: 5.15.4 info: latte-dock
    wm: kwin_x11 vt: 1 dm: SDDM Distro: Garuda Linux base: Arch Linux
Machine:
  Type: Laptop System: ASUSTeK product: Vivobook_ASUSLaptop M3401QA_M3401QA
    v: 1.0 serial: <superuser required>
  Mobo: ASUSTeK model: M3401QA v: 1.0 serial: <superuser required>
    UEFI: American Megatrends LLC. v: M3401QA.303 date: 08/06/2021
Battery:
  ID-1: BAT0 charge: 60.5 Wh (100.0%) condition: 60.5/63.0 Wh (96.0%)
    volts: 12.0 min: 12.0 model: ASUSTeK ASUS Battery type: Li-ion serial: N/A
    status: not charging cycles: 3
  Device-1: hidpp_battery_0 model: Logitech MX Keys Wireless Keyboard
    serial: <filter> charge: 10% (should be ignored) rechargeable: yes
    status: discharging
  Device-2: hidpp_battery_1 model: Logitech Wireless Mouse MX Master 3
    serial: <filter> charge: 100% (should be ignored) rechargeable: yes
    status: discharging
CPU:
  Info: model: AMD Ryzen 7 5800H with Radeon Graphics bits: 64 type: MT MCP
    arch: Zen 3 family: 0x19 (25) model-id: 0x50 (80) stepping: 0
    microcode: 0xA50000C
  Topology: cpus: 1x cores: 8 tpc: 2 threads: 16 smt: enabled cache:
    L1: 512 KiB desc: d-8x32 KiB; i-8x32 KiB L2: 4 MiB desc: 8x512 KiB
    L3: 16 MiB desc: 1x16 MiB
  Speed (MHz): avg: 3209 high: 4203 min/max: 1200/4462 boost: enabled
    scaling: driver: acpi-cpufreq governor: schedutil cores: 1: 2332 2: 2518
    3: 3697 4: 3930 5: 3960 6: 4203 7: 3632 8: 3345 9: 3316 10: 2768 11: 3679
    12: 3021 13: 1915 14: 3777 15: 2532 16: 2725 bogomips: 102206
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
  Vulnerabilities:
  Type: itlb_multihit status: Not affected
  Type: l1tf status: Not affected
  Type: mds status: Not affected
  Type: meltdown status: Not affected
  Type: spec_store_bypass
    mitigation: Speculative Store Bypass disabled via prctl
  Type: spectre_v1
    mitigation: usercopy/swapgs barriers and __user pointer sanitization
  Type: spectre_v2 mitigation: Retpolines, IBPB: conditional, IBRS_FW,
    STIBP: always-on, RSB filling
  Type: srbds status: Not affected
  Type: tsx_async_abort status: Not affected
Graphics:
  Device-1: AMD Cezanne vendor: ASUSTeK driver: amdgpu v: kernel pcie: gen: 3
    speed: 8 GT/s lanes: 16 link-max: gen: 4 speed: 16 GT/s ports:
    active: HDMI-A-1,eDP-1 empty: none bus-ID: 03:00.0 chip-ID: 1002:1638
    class-ID: 0300
  Device-2: IMC Networks USB2.0 HD UVC WebCam type: USB driver: uvcvideo
    bus-ID: 3-3:3 chip-ID: 13d3:5458 class-ID: fe01 serial: <filter>
  Display: x11 server: X.Org v: 21.1.3 with: Xwayland v: 22.1.2
    compositor: kwin_x11 driver: X: loaded: amdgpu unloaded: modesetting
    alternate: fbdev,vesa gpu: amdgpu display-ID: :0 screens: 1
  Screen-1: 0 s-res: 3840x1200 s-dpi: 96 s-size: 1015x317mm (39.96x12.48")
    s-diag: 1063mm (41.86")
  Monitor-1: HDMI-A-1 mapped: HDMI-A-0 pos: right model: HP Z24n G2
    serial: <filter> built: 2019 res: 1920x1200 dpi: 94 gamma: 1.2
    size: 518x324mm (20.39x12.76") diag: 611mm (24.1") ratio: 16:10 modes:
    max: 1920x1200 min: 720x400
  Monitor-2: eDP-1 mapped: eDP pos: primary,left model: Samsung 0x4154
    built: 2020 res: 1920x1200 hz: 90 dpi: 161 gamma: 1.2
    size: 302x189mm (11.89x7.44") diag: 356mm (14") ratio: 16:10 modes:
    max: 2880x1800 min: 640x480
  OpenGL: renderer: AMD RENOIR (LLVM 13.0.1 DRM 3.46 5.18.2-zen1-1-zen)
    v: 4.6 Mesa 22.1.1 direct render: Yes
Audio:
  Device-1: AMD Renoir Radeon High Definition Audio driver: snd_hda_intel
    v: kernel pcie: gen: 3 speed: 8 GT/s lanes: 16 link-max: gen: 4
    speed: 16 GT/s bus-ID: 03:00.1 chip-ID: 1002:1637 class-ID: 0403
  Device-2: AMD ACP/ACP3X/ACP6x Audio Coprocessor vendor: ASUSTeK
    driver: N/A alternate: snd_pci_acp3x, snd_rn_pci_acp3x, snd_pci_acp5x,
    snd_pci_acp6x, snd_acp_pci, snd_sof_amd_renoir
    pcie: gen: 3 speed: 8 GT/s lanes: 16 link-max: gen: 4 speed: 16 GT/s
    bus-ID: 03:00.5 chip-ID: 1022:15e2 class-ID: 0480
  Device-3: AMD Family 17h/19h HD Audio vendor: ASUSTeK
    driver: snd_hda_intel v: kernel pcie: gen: 3 speed: 8 GT/s lanes: 16
    link-max: gen: 4 speed: 16 GT/s bus-ID: 03:00.6 chip-ID: 1022:15e3
    class-ID: 0403
  Device-4: Razer USA Kraken Tournament Edition type: USB
    driver: hid-generic,snd-usb-audio,usbhid bus-ID: 1-3:2 chip-ID: 1532:0520
    class-ID: 0300 serial: <filter>
  Sound Server-1: ALSA v: k5.18.2-zen1-1-zen running: yes
  Sound Server-2: PulseAudio v: 16.0 running: no
  Sound Server-3: PipeWire v: 0.3.51 running: yes
Network:
  Device-1: MEDIATEK MT7921 802.11ax PCI Express Wireless Network Adapter
    vendor: AzureWave driver: mt7921e v: kernel pcie: gen: 2 speed: 5 GT/s
    lanes: 1 bus-ID: 01:00.0 chip-ID: 14c3:7961 class-ID: 0280
  IF: wlp1s0 state: up mac: <filter>
Bluetooth:
  Device-1: IMC Networks Wireless_Device type: USB driver: btusb v: 0.8
    bus-ID: 3-2:2 chip-ID: 13d3:3563 class-ID: e001 serial: <filter>
  Report: bt-adapter ID: hci0 rfk-id: 2 state: down
    bt-service: enabled,running rfk-block: hardware: no software: no
    address: <filter>
Drives:
  Local Storage: total: 953.87 GiB used: 54.21 GiB (5.7%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Intel model: SSDPEKNU010TZ
    size: 953.87 GiB block-size: physical: 512 B logical: 512 B
    speed: 31.6 Gb/s lanes: 4 type: SSD serial: <filter> rev: 002C
    temp: 31.9 C scheme: GPT
Partition:
  ID-1: / raw-size: 936.96 GiB size: 936.96 GiB (100.00%)
    used: 54.21 GiB (5.8%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
  ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
    used: 576 KiB (0.2%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1
  ID-3: /home raw-size: 936.96 GiB size: 936.96 GiB (100.00%)
    used: 54.21 GiB (5.8%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
  ID-4: /var/log raw-size: 936.96 GiB size: 936.96 GiB (100.00%)
    used: 54.21 GiB (5.8%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
  ID-5: /var/tmp raw-size: 936.96 GiB size: 936.96 GiB (100.00%)
    used: 54.21 GiB (5.8%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
Swap:
  Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default)
  ID-1: swap-1 type: zram size: 15.1 GiB used: 1.34 GiB (8.9%)
    priority: 100 dev: /dev/zram0
  ID-2: swap-2 type: partition size: 16.61 GiB used: 0 KiB (0.0%)
    priority: -2 dev: /dev/nvme0n1p3 maj-min: 259:3
Sensors:
  System Temperatures: cpu: 66.0 C mobo: N/A gpu: amdgpu temp: 57.0 C
  Fan Speeds (RPM): cpu: 3200
Info:
  Processes: 431 Uptime: 18h 17m wakeups: 95 Memory: 15.1 GiB
  used: 9.78 GiB (64.8%) Init: systemd v: 251 tool: systemctl Compilers:
  gcc: 12.1.0 clang: 13.0.1 Packages: pacman: 1716 lib: 356 Shell: Zsh v: 5.9
  running-in: xfce4-terminal inxi: 3.3.16
Garuda (2.6.3-2):
  System install date:     2022-01-04
  Last full system update: 2022-06-09 ↻
  Is partially upgraded:   No
  Relevant software:       NetworkManager
  Windows dual boot:       No/Undetected
  Snapshots:               Snapper
  Failed units:            fonthelper.service

Hope someone knows how to do this :slight_smile:

This is the easiest way to do it - the highest priority connection will be used for traffic, so it doesn't really matter if it remains connected to the other network.

However, Network Manager has a "dispatcher" system that will run a script when there is a network change:

https://wiki.archlinux.org/title/NetworkManager#Network_services_with_NetworkManager_dispatcher

You could use this to automate exactly what you need.

4 Likes

Might be the instruction I need : connectivity-change.

I looked online for scripts that uses this instruction.

Gonna have to learn bash xD

3 Likes