автоматическое повторное подключение VPN при пробуждении

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

One Solution collect form web for “автоматическое повторное подключение VPN при пробуждении”

Я нашел это решение на форумах Ubuntu (например, здесь ):

  1. Запустите текстовый редактор с повышенными привилегиями. Например, введите в командной строке:

    gksudo gedit 

    Вам нужен ваш редактор, работающий с повышенными привилегиями, потому что вы сохраните файл в папке, с которой вы не можете внести изменения, с «нормальным» уровнем доступа.

  2. Создайте файл autovpn и сохраните его в каталоге /etc/NetworkManager/dispatcher.d . В этом файле autovpn поместите следующий код:

     #!/usr/bin/python import sys import os import dbus import gobject from dbus.mainloop.glib import DBusGMainLoop # The uuid of the VPN connection to activate VPN_CONNECTION_UUID = "FILL IN YOUR OWN" # The uuid of the connection that needs to be active to start the VPN connection ACTIVE_CONNECTION_UUID = "FILL IN YOUR OWN" # some service, path and interface constants NM_DBUS_SERVICE = "org.freedesktop.NetworkManager" NM_DBUS_PATH = "/org/freedesktop/NetworkManager" NM_DBUS_INTERFACE = "org.freedesktop.NetworkManager" NM_DBUS_IFACE_CONNECTION_ACTIVE = "org.freedesktop.NetworkManager.Connection.Active" NM_DBUS_SERVICE_SYSTEM_SETTINGS = "org.freedesktop.NetworkManagerSystemSettings" NM_DBUS_SERVICE_USER_SETTINGS = "org.freedesktop.NetworkManagerUserSettings" NM_DBUS_IFACE_SETTINGS = "org.freedesktop.NetworkManagerSettings" NM_DBUS_PATH_SETTINGS = "/org/freedesktop/NetworkManagerSettings" NM_DBUS_IFACE_SETTINGS_CONNECTION = "org.freedesktop.NetworkManagerSettings.Connection" DBusGMainLoop(set_as_default=True) nm_dbus_settings_services = (NM_DBUS_SERVICE_SYSTEM_SETTINGS, NM_DBUS_SERVICE_USER_SETTINGS) def get_connections(bus, service): proxy = bus.get_object(service, NM_DBUS_PATH_SETTINGS) iface = dbus.Interface(proxy, dbus_interface=NM_DBUS_IFACE_SETTINGS) return iface.ListConnections() def get_connection_by_uuid(bus, uuid): for service in nm_dbus_settings_services: for c in get_connections(bus, service): proxy = bus.get_object(service, c) iface = dbus.Interface(proxy, dbus_interface = NM_DBUS_IFACE_SETTINGS_CONNECTION) settings = iface.GetSettings() if settings['connection']['uuid'] == uuid: return (c, service) return None def list_uuids(bus): for service in nm_dbus_settings_services: for c in get_connections(bus, service): proxy = bus.get_object(service, c) iface = dbus.Interface(proxy, dbus_interface=NM_DBUS_IFACE_SETTINGS_CONNECTION) settings = iface.GetSettings() conn = settings['connection'] print " %s: %s - %s (%s)" % (service, conn['uuid'], conn['id'], conn['type']) def get_active_connection_path(bus, uuid): proxy = bus.get_object(NM_DBUS_SERVICE, NM_DBUS_PATH) iface = dbus.Interface(proxy, dbus_interface='org.freedesktop.DBus.Properties') active_connections = iface.Get(NM_DBUS_INTERFACE, 'ActiveConnections') connection_and_service = get_connection_by_uuid(bus, uuid) if connection_and_service == None: return None for a in active_connections: proxy = bus.get_object(NM_DBUS_SERVICE, a) iface = dbus.Interface(proxy, dbus_interface='org.freedesktop.DBus.Properties') path = iface.Get(NM_DBUS_IFACE_CONNECTION_ACTIVE, 'Connection') service = iface.Get(NM_DBUS_IFACE_CONNECTION_ACTIVE, 'ServiceName') if service != connection_and_service[1]: continue proxy = bus.get_object(connection_and_service[1], path) iface = dbus.Interface(proxy, dbus_interface=NM_DBUS_IFACE_SETTINGS_CONNECTION) settings = iface.GetSettings() if settings['connection']['uuid'] == uuid: return a return None def activate_connection(bus, vpn_connection, active_connection): def reply_handler(opath): print "<<SUCCESS>>" sys.exit(0) def error_handler(*args): print "<<FAILURE>>" sys.exit(1) proxy = bus.get_object(NM_DBUS_SERVICE, NM_DBUS_PATH) iface = dbus.Interface(proxy, dbus_interface=NM_DBUS_INTERFACE) iface.ActivateConnection(NM_DBUS_SERVICE_USER_SETTINGS, vpn_connection[0], dbus.ObjectPath("/"), active_connection, reply_handler=reply_handler, error_handler=error_handler) bus = dbus.SystemBus() #print "connections:" #list_uuids(bus) if len(VPN_CONNECTION_UUID) < 1 or len(ACTIVE_CONNECTION_UUID) < 1: print "you need to set the uuids" sys.exit(0) vpn_connection = get_connection_by_uuid(bus, VPN_CONNECTION_UUID) if not vpn_connection: print "Configured VPN connection is not known to NM, check VPN_CONNECTION_UUID." sys.exit(1) active_connection = get_connection_by_uuid(bus, ACTIVE_CONNECTION_UUID) if not active_connection: print "Configured active connection is not known to NM, check ACTIVE_CONNECTION_UUID." sys.exit(1) if get_active_connection_path(bus, VPN_CONNECTION_UUID) != None: print "VPN connection already activated" sys.exit(0) active_connection_path = get_active_connection_path(bus, ACTIVE_CONNECTION_UUID) if not active_connection_path: print "The required connection isn't active at the moment" sys.exit(0) print "connecting...." # to:\n '%s'\nwith active connection:\n '%s'" % (vpn_connection, active_connection) activate_connection(bus, vpn_connection, active_connection_path) loop = gobject.MainLoop() loop.run() 
  3. Перейдите в командную строку. Выполните следующую команду:

      nmcli con status 

    Обратите внимание на значения UUID, например, скопируйте их в текстовый файл и вставьте их в текстовый файл.

  4. Вернитесь к сценарию autovpn : заполните UUID как для VPN-соединения, которое вы хотите использовать, так и для подключения, которое должно быть активным, прежде чем вы сможете подключиться к VPN.

    Для большинства пользователей вторым является ваше сетевое подключение по умолчанию, обычно проводное Ethernet-соединение.

    Обратите внимание, что значения UUID будут уникальными для вашей системы. Однако они не должны меняться от входа в систему, чтобы войти в систему, или этот скрипт не работал. Для справки, вот что я вижу:

     $ nmcli con status NAME UUID DEVICES DEFAULT VPN Wired connection 1 e9908d28-ffec-41cd-babb-c0cefb38ae6a eth0 yes no VPN Connection 699f17f2-0ab0-4d1d-94d3-24136ef81603 -- no yes 
  5. Сохраните файл autovpn .

  6. Выйдите из системы и войдите в систему или перезагрузитесь. Ваше VPN-соединение должно активироваться, как только ваше обычное сетевое соединение включено.

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

Надеюсь, это поможет вам.

  • Установка Laravel, Composer и Curl на Linux Mint
  • Как запустить файл скрипта
  • Почему в Synaptic Package Manager нет обновлений для обновления?
  • Компилятор C не может создавать исполняемые файлы при установке gcc AND binutils
  • Mint изменяет маршрут по умолчанию, когда eth0 возвращается и ломает существующие соединения tcp
  • Проблема в конфигурации мыши
  • Linux Mint 17, ваш сеанс длился менее 10 секунд?
  • Как узнать, когда можно удалить мои пакеты i386 (в системе amd64)?
  • Как диагностировать висит на выключении
  • Невозможно установить Linux Mint Cinnamon или Ubuntu, в то время как переключаемая графика включена
  • Невозможно загрузить linuxmint после двойной загрузки с Windows 8.1 с прошивкой efi
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.