atalho de conexão do NetworkManager

3

Eu propus a implementar esse recurso no link , mas ele foi marcado como já implementado. Alguém poderia esclarecer como eu posso fazer isso? Eu gostaria de um atalho para uma conexão específica (vpn ou banda larga) no meu painel (um clique conectar).

    
por Dziamid 12.02.2011 / 15:50

3 respostas

7

Você deve conseguir criar atalhos que chamam nmcli para ativar as conexões:

nmcli con id "nome da sua conexão"

Aqui está o resultado quando eu executo isso em um terminal no meu sistema:

% nmcli con up id "PPTP VPN Testing"
Active connection state: activating
Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/2
state: VPN connecting (3)
state: VPN connecting (getting IP configuration) (4)
Connection activated
    
por Mathieu Trudel-Lapierre 20.04.2011 / 21:31
1

O NetworkManager possui uma interface D-Bus, que você pode usar em outros programas ou scripts.

Por exemplo, consegui conectar uma das conexões VPN do meu gerenciador de rede usando este comando:

 qdbus --system \
   org.freedesktop.NetworkManager \
   /org/freedesktop/NetworkManager \
   org.freedesktop.NetworkManager.ActivateConnection \ #-- this is a method
   org.freedesktop.NetworkManagerUserSettings \ #-- arg 1
   /org/freedesktop/NetworkManagerSettings/4 \ #-- arg 2
   /org/freedesktop/NetworkManager/Devices/1 \ #-- arg 3
   / #-- dumb arg 4 (needed for wifi only)

Você pode navegar na sua infraestrutura do D-Bus com a ferramenta qdbusviewer do pacote qt4-dev-tools . Apenas% de CLI qdbus é de libqt4-dbus .

A API D-Bus do NetworkManager está documentada aqui .

Quando você encontrar os parâmetros necessários (número de conexão, número do dispositivo, etc.), poderá salvar as linhas como um script de shell e criar um iniciador no painel para acessá-lo rapidamente.

Pessoalmente, não me incomodo e apenas faço os dois cliques adicionais. Afinal, não estou me conectando à VPN com muita frequência para sofrer com isso.

    
por ulidtko 12.02.2011 / 17:22
0

Eu uso o cnetworkmanager com este script python por conveniência. O script primeiro inicia a conexão LAN e abre a VPN.

#!/usr/bin/env python
import subprocess
import time
import sys

def getConnectionState():
  """Returns 'CONNECTED' or 'DISCONNECTED'
  """
  p = subprocess.Popen("cnetworkmanager --state", shell=True, stdout=subprocess.PIPE)
  stdout = p.communicate()
  result = stdout[0].split('\n')[0]
  return result

def isConnected():
  return getConnectionState() == 'CONNECTED'

def connectEthernet(name='myethernet'):
  p = subprocess.Popen("cnetworkmanager --activate-connection=user,%s,," % name, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

def connectVPN(name='myvpn'):
  p = subprocess.Popen("cnetworkmanager --activate-connection=user,%s,eth0," % name, shell=True)

def timeout():
  while True:
    time.sleep(0.2)
    if isConnected():
      break

connectEthernet()
timeout()
connectVPN(sys.argv[1])
    
por Dziamid 06.05.2011 / 12:32