Сокращение соединения NetworkManager

3

Я предложил реализовать эту функцию в ссылке , но она была отмечена как уже реализована. Может ли кто-то пролить свет на то, как я могу это сделать? Я хотел бы использовать ярлык для конкретного соединения (vpn или широкополосного) на моей панели (один клик подключается).

    
задан Dziamid 12.02.2011 в 15:50
источник

3 ответа

7

Вы должны иметь возможность создавать ярлыки, которые вызывают nmcli , чтобы вызвать соединения:

nmcli con id "имя вашего соединения"

Вот результат, когда я запускаю это в терминале в своей системе:

% 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
    
ответ дан Mathieu Trudel-Lapierre 20.04.2011 в 21:31
1

NetworkManager имеет интерфейс D-Bus, который можно использовать в других программах или сценариях.

Например, мне удалось подключить одно из VPN-подключений моего сетевого администратора, используя следующую команду:

 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)

Вы можете просмотреть свою инфраструктуру D-Bus с помощью инструмента qdbusviewer из пакета qt4-dev-tools . Только CLI qdbus от libqt4-dbus .

API D-Bus NetworkManager зарегистрирован здесь .

Когда вы найдете нужные параметры (номер подключения, номер устройства и т. д.), вы можете сохранить строки в виде сценария оболочки и создать панель запуска на панели для быстрого доступа к ней.

Лично я не беспокоюсь и просто делаю два дополнительных щелчка. В конце концов, я не слишком часто подключаюсь к VPN, чтобы страдать от них.

    
ответ дан ulidtko 12.02.2011 в 17:22
0

Я использую cnetworkmanager с этим скриптом python для удобства. Сначала скрипт запускает подключение к локальной сети, а затем открывает 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])
    
ответ дан Dziamid 06.05.2011 в 12:32