Festlegen der Ubuntu-System-Proxy-Einstellungen ohne Neustart über die Befehlszeile

14

Ich benutze Ubuntu 14.04. Ich möchte die http proxyEinstellungen über die Befehlszeile ändern . Dies sollte mit dem Ändern der Benutzeroberfläche (Alle Einstellungen-> Netzwerk-> Netzwerkproxy) und dem Klicken auf die Schaltfläche identisch sein Apply System Wide. Ich möchte das System nicht neu starten / abmelden, da ich plane, die Einstellungen dynamisch über ein Skript zu ändern ( bash).

ma08
quelle
askubuntu.com/questions/175172/… . Im Kommentar der Antwort heißt es zu tun sudo service network manager restart.
Ramesh
@Ramesh es funktioniert nicht. Ich bin diese Frage bereits durchgegangen.
ma08

Antworten:

15

Soweit ich weiß, führt das systemweite Festlegen von Proxys über diese GUI drei Dinge aus:

  1. Stellen Sie die entsprechenden Werte in der Datenbank dconf ein.
  2. Stellen Sie die Werte in ein /etc/environment.
  3. Stellen Sie die Werte in ein /etc/apt/apt.conf.

1 und 3 werden sofort wirksam. /etc/environmentwird bei der Anmeldung analysiert, daher müssen Sie sich abmelden und anmelden, damit dies wirksam wird. (Beachten Sie, dass dies eine ordnungsgemäße Anmeldung ist und nicht nur die Ausführung einer Anmeldeshell.) Das folgende Skript sollte gleichwertig sein (unter der Annahme von http / https-Proxys):

#! /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

Auch wenn eine erneute Anmeldung erforderlich ist, damit PAM /etc/environmentüberall angewendet werden kann, können Sie in einer aktuellen Shell die Werte in dieser Datei extrahieren:

export http_proxy=$(pam_getenv http_proxy)
muru
quelle
@ ma08 Was ist die Ausgabe von gsettings get org.gnome.system.proxy mode; gsettings get org.gnome.system.proxy.http host; gsettings get org.gnome.system.proxy.http port;?
muru
Jetzt habe ich das Problem, dass beim Ausführen des Skripts als normaler Benutzer die Warnung (process:9662): dconf-WARNING **: failed to commit changes to dconf: Could not connect: Connection refusedfür jeden Befehl in gsettings angezeigt wird. Wenn ich es als root ausführe, funktioniert es einwandfrei, aber die Ausgabe der obigen Befehle (get) sind die geänderten nur im root, nicht aber im normalen Benutzer.
ma08
Aaarghh .. Das verdammte Drehbuch ist voller Bugs. Das sind drei, die ich reparieren musste. : / In der zweiten sudo tee, beachten Sie, dass der Dateiname ist /etc/environmentund nicht /etc/apt/apt.conf. Möglicherweise müssen Sie die Mülleinträge in der Datei apt.conf löschen.
muru
Das Problem scheint die Warnung zu sein, die ich zuvor in dem Kommentar gesagt habe.
ma08
1
Vielen Dank, Ihr Skript funktioniert und diese Antwort im Link hat dazu beigetragen, diesen Fehler zu beheben. Ich hätte das Debuggen selbst durchführen sollen. Danke vielmals.
ma08
3

Ich habe ein Tool namens ProxyMan erstellt, um die gesamte Aufgabe zu vereinfachen. Sie können es von diesem Link herunterladen .

Sie können sich auch den Code ansehen, wenn Sie mehr über die Funktionsweise des Backends erfahren möchten. Laden Sie die ZIP-Datei herunter, extrahieren Sie sie, navigieren Sie zum Speicherort der extrahierten Dateien im Terminal, und die folgenden Befehle helfen Ihnen dabei:

  • bash main.sh: Proxy setzen und entfernen.
  • bash proxy_check.sh: um die aktuellen Proxy-Einstellungen zu überprüfen.
Himanshu Shekhar
quelle
1
Dies ist ein tolles kleines Tool! Hat mir eine Menge Arbeit gerettet!
Gh0sT
-2

Ich denke, das sollte Kopfschmerzen vermeiden:

Proxy-Einstellungen Video

Ein exzellentes Tutorial, das in Python ausgeführt wird. Einfache und authentifizierte Proxy-Einstellungen in Ubuntu 12.04 / 12.10 / 13.04 / 13.10 / 14.04 / 14.10 und höher auf 100% setzen.

Lösung 1 Das System muss "python" installiert sein. Führen Sie mit dem Interpreter den folgenden Befehl aus: Befehl: "sudo python setproxy.py [Proxy_Server] [proxy_port] [PROXY_USER] [proxy_password]"

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

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

Lösung 2: Befehle:

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

Füllen Sie die entsprechenden Felder aus:

- Proxy server
- Proxy port
- User
- Password
Felix Aballi
quelle
2
Um daraus eine gute Antwort zu machen, sollten Sie zumindest die Schritte skizzieren.
Julie Pelletier