如何设置单个快捷方式来打开和关闭Internet连接

哪个确切的单行条件构造激活现有的Internet连接(如果已关闭)并将其停用(如果已启用)?

我看了一些在线页面,了解其使用情况

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

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

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:这个问题遵循前一段时间学到的内容: 如何设置键盘快捷键以激活现有的Internet连接?

SO是Ubuntu 13.04,Internet连接类型是移动宽带

这应该做到这一点。

 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' 

您应该查看Advanced Bash Scripting Guide:

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