如何设置单个快捷方式来打开和关闭Internet连接
哪个确切的单行条件构造激活现有的Internet连接(如果已关闭)并将其停用(如果已启用)?
我看了一些在线页面,了解其使用情况
- “nmcli”命令
- “if then else fi”构造
- 命令substition,即使用“$(command_name)”函数来获取命令的输出
- 用于管理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