在 ubuntu + cinnamon 上使用 rfkill 反转网络状态

在 ubuntu + cinnamon 上使用 rfkill 反转网络状态

我使用带有 Cinnamon 的 ubuntu,我厌倦了没有蓝牙开关,不得不使用 rfkill 关闭蓝牙。目前,我使用 blueman 打开蓝牙并管理设备和连接,使用完后,我在终端上使用 rfkill 将其关闭。我想创建一个可点击的宏(即:作为将显示在我的任务栏上的 Cinnamon 小程序),用 rfkill 打开和关闭蓝牙。

我的问题是:是否有一个 rfkill 命令可以让您简单地反转设备的状态(即,如果阻塞则解除阻塞,如果解除阻塞则阻塞)?

答案1

rfkill 中没有反转标志,也没有其他 CLI 工具可以做到这一点。您可以为其编写一个类似于下面的小脚本,并使用键绑定启动该脚本。

笔记 :您需要将您的用户添加到 sudoers 文件中才能在无需密码的情况下运行 rfkill。

#!/bin/bash
BTDEVNO=1
currentState=$(rfkill list $BTDEVNO)
if [[ $currentState =~ ": no" ]]; then
    echo "Unblocked, going to block";
    sudo rfkill block $BTDEVNO;
else
    echo "Blocked, going to unblock";
    sudo rfkill unblock $BTDEVNO;
fi

编辑-关于 sudoers (由 Bruh 制作):

要将 rfkill 添加到 sudoers 列表,请键入sudo visudo并在文件末尾的行下添加以下内容%sudo

user_name : ALL=(ALL) NOPASSWD : /usr/sbin/rfkill

这将允许 rfkill 运行而不需要 sudo 密码。

编辑 2 - 对脚本稍作修改(由 Bruh 制作):

如果脚本似乎总是看到 BT 被阻止,尽管手动 rfkill 列表显示它未被阻止,请尝试用以下内容替换 if 语句:

if echo $currentState | grep 'Bluetooth Soft blocked: no'; then

相关内容