Ustaw ustawienia systemu Ubuntu Proxy bez ponownego uruchamiania z wiersza poleceń


14

Używam Ubuntu 14.04. Chcę zmienić http proxyustawienia z wiersza polecenia. Powinno to być równoważne zmianie w GUI (Wszystkie ustawienia-> Sieć-> Network Proxy) i kliknięciu przycisku Apply System Wide. Nie chcę ponownie uruchamiać / wylogowywać się z systemu, ponieważ planuję dynamicznie zmieniać ustawienia ze skryptu ( bash).


askubuntu.com/questions/175172/… . W komentarzu do odpowiedzi napisano, że należy to zrobić sudo service network manager restart.
Ramesh

@ Ramesh to nie działa. Przeszedłem już przez to pytanie.
ma08

Odpowiedzi:


15

Z tego, co rozumiem, ustawienie serwerów proxy w całym systemie za pomocą tego graficznego interfejsu użytkownika robi trzy rzeczy:

  1. Ustaw odpowiednie wartości w bazie danych dconf.
  2. Ustaw wartości w /etc/environment.
  3. Ustaw wartości w /etc/apt/apt.conf.

1 i 3 wchodzą w życie natychmiast. /etc/environmentjest analizowany podczas logowania, więc musisz się wylogować i zalogować, aby to zadziałało. (Pamiętaj, że jest to prawidłowe logowanie, a nie tylko uruchamianie powłoki logowania). Poniższy skrypt powinien być równoważny (przy założeniu serwerów proxy 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

Mimo że PAM wymaga ponownego logowania, aby zastosować go /etc/environmentwszędzie, w bieżącej powłoce nadal można wyodrębnić wartości z tego pliku:

export http_proxy=$(pam_getenv http_proxy)

@ ma08 Jaka jest wydajność gsettings get org.gnome.system.proxy mode; gsettings get org.gnome.system.proxy.http host; gsettings get org.gnome.system.proxy.http port;?
muru

Teraz pojawia się problem, gdy uruchamiam skrypt jako zwykły użytkownik, pojawia się ostrzeżenie (process:9662): dconf-WARNING **: failed to commit changes to dconf: Could not connect: Connection refuseddla każdego polecenia w ustawieniach gset. Jeśli uruchomię go jako root, działa dobrze, ale wyniki powyższych poleceń (get) są zmienione tylko w katalogu głównym, ale nie u zwykłego użytkownika.
ma08

Aaarghh .. Cholerny skrypt jest pełen błędów. To trzy, które musiałem naprawić. : / Po drugie sudo tee, zwróć uwagę, że nazwa pliku jest /etc/environmenti nie jest /etc/apt/apt.conf. Może być konieczne usunięcie wpisów śmieci w apt.conf.
muru

Problemem wydaje się być ostrzeżenie, które wypowiedziałem w komentarzu wcześniej.
ma08,

1
Dziękujemy, skrypt działa i ta odpowiedź w linku pomogła rozwiązać ten błąd. Powinienem był sam przeprowadzić debugowanie. Wielkie dzięki.
ma08

3

Zrobiłem narzędzie ProxyMan, aby uprościć całe zadanie. Możesz pobrać go z tego linku .

Możesz także rzucić okiem na kod, jeśli bardziej interesuje Cię funkcjonowanie backendu. Pobierz plik zip, rozpakuj go, przejdź do lokalizacji wyodrębnionych plików w terminalu, a następujące polecenia pomogą:

  • bash main.sh: ustawianie i wyłączanie proxy.
  • bash proxy_check.sh: aby sprawdzić bieżące ustawienia proxy.

1
To niesamowite małe narzędzie! Zaoszczędził mi mnóstwo pracy!
Gh0sT

-2

Myślę, że to powinno unikać bólów głowy:

Ustawienia proxy wideo

Doskonały samouczek działający w Pythonie. Ustawianie prostych i uwierzytelnionych ustawień proxy w Ubuntu 12.04 / 12.10 / 13.04 / 13.10 / 14.04 / 14.10 i powyżej 100% działa.

Rozwiązanie 1 System musi być zainstalowany „python”. Za pomocą interpretera uruchomionego polecenie: Polecenie: „sudo python setproxy.py [Serwer proxy] [port_ proxy] [PROXY_USER] [hasło_ proxy]”

Wideo: https://www.youtube.com/watch?v=eBtzKa-dvJg

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

Rozwiązanie 2: polecenia:

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

Wypełnij odpowiednie pola:

- Proxy server
- Proxy port
- User
- Password

2
Aby uczynić to dobrą odpowiedzią, powinieneś przynajmniej zarysować kroki.
Julie Pelletier,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.