Встановіть параметри системного проксі Ubuntu без перезавантаження з командної лінії


14

Я використовую Ubuntu 14.04. Я хочу змінити http proxyналаштування з командного рядка. Це має бути рівнозначним зміні GUI (Усі настройки-> Мережа-> Мережевий проксі) та натисканню кнопки Apply System Wide. Я не хочу перезавантажувати / виходити з системи, оскільки я планую динамічно змінювати налаштування зі сценарію ( bash).


askubuntu.com/questions/175172/… . У коментарі відповіді сказано зробити sudo service network manager restart.
Рамеш

@Ramesh це не працює. Я вже пройшов це питання.
ma08,

Відповіді:


15

Як я розумію, встановлення проксі-серверів через систему GUI робить три речі:

  1. Встановіть відповідні значення в базі даних dconf.
  2. Встановіть значення в /etc/environment.
  3. Встановіть значення в /etc/apt/apt.conf.

1 і 3 набирають чинності негайно. /etc/environmentаналізується при вході в систему, тому для вступу в силу вам потрібно буде вийти з системи та увійти. (Зверніть увагу, що це власне вхід, а не просто запуску оболонки для входу.) Наступний скрипт повинен бути еквівалентним (припускаючи http / https проксі):

#! /bin/bash
HTTP_PROXY_HOST=proxy.example.com
HTTP_PROXY_PORT=3128
HTTPS_PROXY_HOST=proxy.example.com
HTTPS_PROXY_PORT=3128

gsettings set org.gnome.system.proxy mode manual
gsettings set org.gnome.system.proxy.http host "$HTTP_PROXY_HOST"
gsettings set org.gnome.system.proxy.http port "$HTTP_PROXY_PORT"
gsettings set org.gnome.system.proxy.https host "$HTTPS_PROXY_HOST"
gsettings set org.gnome.system.proxy.https port "$HTTPS_PROXY_PORT"

sudo sed -i.bak '/http[s]::proxy/Id' /etc/apt/apt.conf
sudo tee -a /etc/apt/apt.conf <<EOF
Acquire::http::proxy "http://$HTTP_PROXY_HOST:$HTTP_PROXY_PORT/";
Acquire::https::proxy "http://$HTTPS_PROXY_HOST:$HTTPS_PROXY_PORT/";
EOF

sudo sed -i.bak '/http[s]_proxy/Id' /etc/environment
sudo tee -a /etc/environment <<EOF
http_proxy="http://$HTTP_PROXY_HOST:$HTTP_PROXY_PORT/"
https_proxy="http://$HTTPS_PROXY_HOST:$HTTPS_PROXY_PORT/"
EOF

Навіть незважаючи на те, що для повторного входу в PAM потрібно застосовувати /etc/environmentвсюди, у поточній оболонці ви все одно можете витягти значення у цьому файлі:

export http_proxy=$(pam_getenv http_proxy)

@ ma08 Який результат gsettings get org.gnome.system.proxy mode; gsettings get org.gnome.system.proxy.http host; gsettings get org.gnome.system.proxy.http port;?
муру

Тепер у мене виникає проблема, коли я запускаю скрипт як звичайний користувач, (process:9662): dconf-WARNING **: failed to commit changes to dconf: Could not connect: Connection refusedдля кожної команди в gsettings з’являється попередження . Якщо я запускаю його як root, він працює нормально, але вихід цих команд (get) є зміненими лише в корені, але не у звичайного користувача.
ma08,

Ааарх .. Проклятий сценарій завалений помилками. Це три, що мені довелося виправити. : / По-друге sudo tee, зверніть увагу, що ім'я файлу є, /etc/environmentа ні /etc/apt/apt.conf. Можливо, вам доведеться видалити записи сміття в apt.conf.
муру

Проблема, здається, є попередженням, про яке я говорив у коментарі раніше.
ma08

1
Дякую, ваш сценарій працює, і ця відповідь у посиланні допомогла подолати цю помилку. Я мав би зробити налагодження сам. Дуже дякую.
ma08,

3

Я зробив інструмент, ProxyMan, щоб спростити всю задачу. Ви можете завантажити його за цим посиланням .

Крім того, ви можете ознайомитися з кодом, якщо вам більше цікаво знати функцію бекенда. Завантажте zip-файл, витягніть їх, перейдіть до місця розташування вилучених файлів у терміналі і наступні команди допоможуть вам:

  • bash main.sh: встановлення та скидання проксі.
  • bash proxy_check.sh: щоб перевірити поточні налаштування проксі.

1
Це дивовижний маленький інструмент! Врятувало мене тонну роботи!
Gh0sT

-2

Я думаю, що це повинно уникати головних болів:

Налаштування проксі-сервера Відео

Чудовий підручник, що працює в пітоні. Налаштування простих та автентифікованих параметрів проксі в Ubuntu 12.04 / 12.10 / 13.04 / 13.10 / 14.04 / 14.10 та вище 100%.

Рішення 1 Система повинна бути встановлена ​​"python". Якщо інтерпретатор виконує команду: Command: "sudo python setproxy.py [Proxy_Server] [proxy_port] [PROXY_USER] [proxy_password]"

Відео: https://www.youtube.com/watch?v=eBtzKa-dvJg

[ Proxy_Server ] : proxy.test.ts
[ Proxy_port ] : 8080
[ PROXY_USER ] : domainuser
[ Proxy_password ] : " the_password "

Рішення 2: команди:

"Sudo apt- get install python- support"
"Sudo apt- get install ntlmaps "

Заповніть поля відповідно:

- Proxy server
- Proxy port
- User
- Password

2
Щоб зробити це гарною відповіддю, вам слід принаймні окреслити кроки.
Джулі Пелтьє
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.