Como definir um único atalho para ativar e desativar uma conexão com a Internet

2

Qual construção condicional de uma linha exata ativa uma conexão de Internet existente se estiver desativada e desativada se estiver ativada?

Procurei algumas páginas on-line para entender o uso de

  1. o comando "nmcli"
  2. a construção "if then else fi"
  3. comando da subestação, ou seja, o uso da função "$ (command_name)" para obter a saída de um comando
  4. o comando "grep" para gerenciar a saída do comando nmcli

A construção final deve ser desse tipo:

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

Nota: a condição if não é um código real e deve ser elaborada.

Mas não encontrei uma opção para o comando nmcli para testar se uma conexão está ativa ou inativa. Pensei em usar a opção "status", por exemplo: "nmcli c status id" MyConnection "", mas enquanto nmcli fornece uma mensagem de saída parsável ao grep quando "MyConnection" está ativo, ele retorna um erro e não sai para o linha de comando quando "MyConnection" está inativo (o cursor na janela do terminal fica lá e um CTRL + C é necessário para recuperar o prompt do shell).

Eu preciso de ajuda para organizar essas coisas em um script completo de uma linha utilizável no

System Settings > Keyboard > Shortcuts > Custom Shortcuts

lista.

Muito obrigado.

P.S .: Esta questão segue o que aprendemos aqui há algum tempo: Como configurar um atalho de teclado para ativar uma conexão de Internet existente?

SO é o Ubuntu 13.04, o tipo de conexão com a Internet é banda larga móvel

    
por Andrew 05.08.2013 / 14:27

2 respostas

4

Isso deve ser feito.

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

Se você for usá-lo a partir de um ambiente não-bash, você precisará incluir o comando no bash da seguinte forma:

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'
    
por Oli 05.08.2013 / 14:58
1

Você deve dar uma olhada no Guia de script avançado de bash:

link

Não vou explicar os detalhes do roteiro, você deve descobrir isso como um exercício de aprendizagem.

#!/usr/bin/env bash
if [ -z  ]
then
    essid="MyConnection"
else
    essid=
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
    
por mgor 05.08.2013 / 15:03