Imposta le impostazioni proxy del sistema Ubuntu senza riavviare dalla riga di comando


14

Sto usando Ubuntu 14.04. Voglio cambiare le http proxyimpostazioni dalla riga di comando. Questo dovrebbe equivalere a cambiare nella GUI (Tutte le impostazioni-> Rete-> Proxy di rete) e fare clic sul pulsante Apply System Wide. Non voglio riavviare / disconnettersi dal sistema poiché sto pianificando di modificare dinamicamente le impostazioni da uno script ( bash).


askubuntu.com/questions/175172/… . Nel commento della risposta, dice di fare sudo service network manager restart.
Ramesh,

@Ramesh non funziona. Ho già affrontato questa domanda.
ma08,

Risposte:


15

Da quello che ho capito, l'impostazione dei proxy a livello di sistema tramite quella GUI fa tre cose:

  1. Impostare i valori corrispondenti nel database dconf.
  2. Impostare i valori in /etc/environment.
  3. Impostare i valori in /etc/apt/apt.conf.

1 e 3 hanno effetto immediato. /etc/environmentviene analizzato al momento dell'accesso, quindi sarà necessario disconnettersi e accedere affinché ciò abbia effetto. (Si noti che questo è il login corretto, non semplicemente l'esecuzione di una shell di login.) Il seguente script dovrebbe essere equivalente (presupponendo i 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

Anche se richiede un nuovo accesso per PAM da applicare /etc/environmentovunque, in una shell corrente è comunque possibile estrarre i valori in quel file:

export http_proxy=$(pam_getenv http_proxy)

@ ma08 Qual è l'output di gsettings get org.gnome.system.proxy mode; gsettings get org.gnome.system.proxy.http host; gsettings get org.gnome.system.proxy.http port;?
muru,

Ora ho il problema, quando (process:9662): dconf-WARNING **: failed to commit changes to dconf: Could not connect: Connection refusedeseguo lo script come utente normale, viene visualizzato l'avviso per ogni comando in gsettings. Se lo eseguo come root, funziona benissimo ma l'output dei comandi sopra (get) sono quelli modificati solo nel root ma non nell'utente normale.
ma08,

Aaarghh .. La dannata sceneggiatura è piena di bug. Sono tre che ho dovuto correggere. : / Nel secondo sudo tee, si noti che il nome del file è /etc/environmente non /etc/apt/apt.conf. Potrebbe essere necessario eliminare le voci di immondizia in apt.conf.
muru,

Il problema sembra essere l'avvertimento che ho detto nel commento prima.
ma08,

1
Grazie, il tuo script funziona e quella risposta nel link ha aiutato a superare quell'errore. Avrei dovuto eseguire il debug da solo. Molte grazie.
ma08,

3

Ho creato uno strumento, ProxyMan, per semplificare l'intero compito. Puoi scaricarlo da questo link .

Inoltre, puoi dare un'occhiata al codice se sei più interessato a conoscere il funzionamento del back-end. Scarica il file zip, estraili, vai alla posizione dei file estratti nel terminale e i seguenti comandi ti aiuterebbero:

  • bash main.sh: per impostare e annullare l'impostazione del proxy.
  • bash proxy_check.sh: per verificare le impostazioni correnti del proxy.

1
Questo è un piccolo strumento fantastico! Mi ha salvato un sacco di lavoro!
Gh0sT

-2

Penso che questo dovrebbe evitare il mal di testa:

Proxy Settings Video

Un tutorial eccellente, in esecuzione in Python. Configurare le impostazioni proxy semplici e autenticate in Ubuntu 12.04 / 12.10 / 13.04 / 13.10 / 14.04 / 14.10 e oltre Funzionante al 100%.

Soluzione 1 Il sistema deve essere installato "python". Con l'interprete che esegue il comando: Comando: "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 "

Soluzione 2: comandi:

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

Compila i campi come appropriato:

- Proxy server
- Proxy port
- User
- Password

2
Per rendere questa una buona risposta, dovresti almeno delineare i passaggi.
Julie Pelletier,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.