Я использую Ubuntu-Studio 12.10 с использованием GNOME-3 и пытаюсь настроить bash-скрипт в /etc/network/if-up.d для автоматической настройки параметров прокси-сервера на основе SSID сеть, к которой я подключен. Я не могу заставить gsettings работать автоматически, используя любое из следующего:
gsettings set org.gnome.system.proxy mode "manual"
sudo -u blaine gsettings set org.gnome.system.proxy mode "manual"
su blaine -c 'gsettings set org.gnome.system.proxy mode "manual"'
Кроме того, я бы хотел, чтобы скрипт изменил переменные окружения http_proxy, https_proxy и так далее, чтобы такие вещи, как Wine, могли их распознавать без необходимости выходить из системы и входить в нее, а пять дней поиска в Google говорят, что это невозможно.
За исключением - я знаю, что это можно сделать. Кнопка «Применить общесистемную» в Unity делает все это без необходимости повторной регистрации. Некоторые дальнейшие исследования выявили эту статью , в которой предлагается доступ к кнопке com.ubuntu.systemservice.setProxy, который предположительно является частью пакета ubuntu-system-service.
Можно ли использовать ubuntu-system-service для установки общесистемного прокси через bash, терминал или подобное?
Если кто-то все еще ищет решение, вот что я нашел. Ubuntu предоставляет службу DBus через пакет ubuntu-system-service, но я не знаком с DBus.
Однако, проверяя исходный код (разве Open Source не подходит?), Действие setProxy делает 2 вещи:
В первом случае файл в / etc / environment изменяется. Второй случай немного сложнее - файлы в /etc/apt/apt.conf.d сканируются на наличие строк, соответствующих Acquire :::: Proxy, где значения заменяются. Если совпадающих строк нет, то в каждый файл APT conf добавляется прокси-строка (как указано выше).
Соответствующие файлы находятся в UbuntuSystemService / backend.py (~ строка 209 @ версия 0.2.5).
Отвечая на ваш вопрос, вы можете либо внести те же изменения, что и ubuntu-system-service, либо попытаться выяснить это с помощью DBus:
dbus-send --system --print-reply --dest=com.ubuntu.SystemService --type=method_call / com.ubuntu.SystemService.set_proxy string:'http' string:'127.0.0.1:8080'
По какой-то причине я продолжаю получать Ложь как ответ на этот вопрос, но вы можете понять это.
Возвращаемое значение true:
sudo dbus-send --system --print-reply --dest = com.ubuntu.SystemService --type = method_call / com.ubuntu.SystemService.set_proxy string: ' http 'string:' http://127.0.0.1:8081 '
, и я выясняю, что вам нужно добавить префикс к схеме: http из этого кода: