Как установить единственный ярлык для включения и выключения Интернет-соединения

Какая точная короткая условная конструкция активирует существующее Интернет-соединение, если это выключено, и деактивируйте его, если это идет?

Я смотрел некоторые страницы онлайн для понимания использования

  1. команда "nmcli"
  2. "если затем еще fi" конструкция
  3. управляйте, чтобы substition, т.е. использование "$ (command_name)" функция получил вывод команды
  4. "grep" управляют для управления выводом команды nmcli

Заключительная конструкция должна быть этого вида:

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

Примечание: если условие не является реальным кодом и должно быть разработано.

Но я не нашел, что опция для команды nmcli протестировала, если соединение закончилось или вниз. Я думал об использовании опции "состояния", т.е.: "nmcli c идентификатор состояния "MyConnection"", но в то время как nmcli дает grep-parsable выходной сигнал, когда "MyConnection" произошел, он возвращает ошибку и не выходит к командной строке, когда "MyConnection" снижается (курсор в окне терминала остается там, и CTRL+C необходим для возвращения приглашения оболочки).

Я нуждаюсь в некоторой помощи для расположения этих вещей в полный короткий сценарий, применимый в

System Settings > Keyboard > Shortcuts > Custom Shortcuts

список.

Большое спасибо.

P.S.: Этот вопрос следует за тем, что училось здесь некоторое время назад: Как установить сочетание клавиш для активации существующего Интернет-соединения?

ТАК Ubuntu 13.04, тип Интернет-соединения является Мобильной широкополосной связью

2
задан 13 April 2017 в 15:24

2 ответа

Это должно сделать это.

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'
0
ответ дан 13 April 2017 в 15:24

Вам следует взглянуть на Руководство по расширенному написанию сценариев Bash:

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

I не буду объяснять детали сценария, вы должны понять это как учебное упражнение.

#!/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
0
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

Похожие вопросы: