#!/bin/bash set -euo pipefail if [ "$#" -gt 0 ] && [ "$1" == 'list' ]; then ip -o link show | while IFS=: read -r _ name _; do echo "${name}" done exit 0 elif [ "$#" -gt 0 ] && [ "$1" == 'kill' ]; then shift for interface in "$@"; do device=$(busctl call org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager GetDeviceByIpIface s "$interface" | awk '{gsub(/"/,""); print $NF}') echo $device busctl call org.freedesktop.NetworkManager "$device" org.freedesktop.NetworkManager.Device Delete done elif [ "$#" -gt 0 ] && [ "$1" == 'bwrap-kill' ]; then shift for interface in "$@"; do device=$(bwrap \ \ --ro-bind-try /usr/bin /usr/bin \ --symlink /usr/bin /bin \ --ro-bind-try /usr/lib /usr/lib \ --symlink /usr/lib /lib \ --ro-bind-try /usr/lib64 /usr/lib64 \ --symlink /usr/lib64 /lib64 \ --ro-bind-try /usr/sbin /usr/sbin \ --symlink /usr/sbin /sbin \ \ --ro-bind /etc/alternatives /etc/alternatives \ $(find /run -mindepth 1 -maxdepth 1 ! -path /run/dbus -printf '--bind %p %p ' 2>/dev/null) \ --dev /dev \ --dev-bind-try /dev/dri /dev/dri \ --proc /proc \ --ro-bind /sys /sys \ --ro-bind /var /var \ \ --ro-bind /home /home \ \ busctl call org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager GetDeviceByIpIface s "$interface" | awk '{gsub(/"/,""); print $NF}') echo $device bwrap \ \ --ro-bind-try /usr/bin /usr/bin \ --symlink /usr/bin /bin \ --ro-bind-try /usr/lib /usr/lib \ --symlink /usr/lib /lib \ --ro-bind-try /usr/lib64 /usr/lib64 \ --symlink /usr/lib64 /lib64 \ --ro-bind-try /usr/sbin /usr/sbin \ --symlink /usr/sbin /sbin \ \ --ro-bind /etc/alternatives /etc/alternatives \ $(find /run -mindepth 1 -maxdepth 1 ! -path /run/dbus -printf '--bind %p %p ' 2>/dev/null) \ --dev /dev \ --dev-bind-try /dev/dri /dev/dri \ --proc /proc \ --ro-bind /sys /sys \ --ro-bind /var /var \ \ --ro-bind /home /home \ \ busctl call org.freedesktop.NetworkManager "$device" org.freedesktop.NetworkManager.Device Delete done elif [ "$#" -gt 0 ] && [ "$1" == 'kill-mullvad' ]; then pkill mullvad-gui; mullvad lockdown-mode set off && mullvad disconnect exit 0 elif [ "$#" -gt 0 ] && [ "$1" == 'bwrap-kill-mullvad' ]; then bwrap \ \ --ro-bind-try /usr/bin /usr/bin \ --symlink /usr/bin /bin \ --ro-bind-try /usr/lib /usr/lib \ --symlink /usr/lib /lib \ --ro-bind-try /usr/lib64 /usr/lib64 \ --symlink /usr/lib64 /lib64 \ --ro-bind-try /usr/sbin /usr/sbin \ --symlink /usr/sbin /sbin \ \ --ro-bind /etc/alternatives /etc/alternatives \ $(find /run -mindepth 1 -maxdepth 1 ! -path /run/dbus -printf '--bind %p %p ' 2>/dev/null) \ --dev /dev \ --dev-bind-try /dev/dri /dev/dri \ --proc /proc \ --ro-bind /sys /sys \ --ro-bind /var /var \ \ --ro-bind /home /home \ \ pkill mullvad-gui; mullvad lockdown-mode set off && mullvad disconnect exit 0 else echo 'Unknown action. Supported actions: "list", "kill [i ...]", "bwrap-kill [i ...]", "kill-mullvad", "bwrap-kill-mullvad".' fi