Я предложил реализовать эту функцию в http://brainstorm.ubuntu.com/idea/27164/ , но она была помечена как уже реализованная. Может ли кто-нибудь пролить свет на то, как я могу это сделать? Мне бы хотелось, чтобы на моей панели был ярлык для определенного соединения (vpn или широкополосный) (одним щелчком мыши).
Я использую cnetworkmanager с этим сценарием Python для удобства. Сценарий сначала запускает соединение LAN, затем открывает 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])
Вы должны иметь возможность создавать ярлыки, которые вызывают nmcli для установления соединений:
nmcli con up id «имя вашего соединения»
[ 114] Вот результат, когда я запускаю это в терминале в моей системе:
% 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
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, чтобы страдать от них.