如何设置单个快捷方式来打开或关闭互联网连接

如何设置单个快捷方式来打开或关闭互联网连接

哪一个精确的单行条件构造会在现有 Internet 连接关闭时激活它,并在现有 Internet 连接打开时停用它?

我查看了一些在线页面来了解

  1. “nmcli”命令
  2. “if then else fi” 结构
  3. 命令替换,即使用“$(command_name)”函数获取命令的输出
  4. “grep”命令用于管理 nmcli 命令输出

最终的构造应该是这样的:

if ( nmcli MyConnection status = down ); then nmcli c up id "MyConnection"; else nmcli c down id "MyConnection"; fi

注意:if 条件不是真正的代码,应该详细说明。

但是我没有找到 nmcli 命令的选项来测试连接是打开还是关闭。我考虑使用“status”选项,即:“nmcli c status id “MyConnection””,但是当“MyConnection”打开时,nmcli 会给出 grep 可解析的输出消息,而当“MyConnection”关闭时,它会返回错误并且不会退出到命令行(终端窗口中的光标停留在那里,Ctrl+C 需要恢复 shell 提示符)。

我需要一些帮助来把这些东西整理成一个完整的单行脚本,以便在

System Settings > Keyboard > Shortcuts > Custom Shortcuts

列表。

非常感谢。

PS:这个问题是根据我们之前在这里学到的内容提出的: 如何设置键盘快捷键来激活现有的互联网连接?

SO 是 Ubuntu 13.04,互联网连接类型是移动宽带

答案1

这应该可以。

if [[ -z $(nmcli c status id MyConnection | grep -E 'STATE\:\s+activated') ]]; then nmcli c up id MyConnection; else nmcli c down id MyConnection; fi

如果您要在非 bash 环境中使用它,则需要在 bash 中包装命令,如下所示:

bash -c 'if [[ -z $(nmcli c status id MyConnection | grep -E 'STATE\:\s+activated') ]]; then nmcli c up id MyConnection; else nmcli c down id MyConnection; fi'

答案2

您应该看一下高级 Bash 脚本指南:

http://www.tldp.org/LDP/abs/html/

我不会解释脚本的细节,你应该自己弄清楚,作为学习练习。

#!/usr/bin/env bash
if [ -z $1 ]
then
    essid="MyConnection"
else
    essid=$1
fi

nmcli c status id $essid 2>&1 > /dev/null

if [ $? -eq 0 ]
then
    action="down"
else
    action="up"
fi

nmcli c $action id $essid

相关内容