Establecer la configuración del proxy del sistema Ubuntu sin reiniciar desde la línea de comandos


14

Estoy usando Ubuntu 14.04. Quiero cambiar la http proxyconfiguración desde la línea de comando. Esto debería ser equivalente a cambiar en la GUI (Todas las configuraciones-> Red-> Proxy de red) y hacer clic en el botón Apply System Wide. No quiero reiniciar / cerrar sesión en el sistema ya que planeo cambiar la configuración dinámicamente desde un script ( bash).


askubuntu.com/questions/175172/… . En el comentario de la respuesta, dice que hacer sudo service network manager restart.
Ramesh

@Ramesh no funciona. Ya revisé esa pregunta.
ma08

Respuestas:


15

Por lo que entiendo, establecer proxies en todo el sistema a través de esa GUI hace tres cosas:

  1. Establezca los valores correspondientes en la base de datos dconf.
  2. Establecer los valores en /etc/environment.
  3. Establecer los valores en /etc/apt/apt.conf.

1 y 3 surten efecto inmediatamente. /etc/environmentse analiza al iniciar sesión, por lo que deberá cerrar sesión e iniciar sesión para que surta efecto. (Tenga en cuenta que esto es un inicio de sesión correcto, no simplemente ejecutar un shell de inicio de sesión). El siguiente script debe ser equivalente (suponiendo servidores 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

Aunque requiere un reinicio de sesión para que PAM se aplique en /etc/environmenttodas partes, en un shell actual aún puede extraer los valores en ese archivo:

export http_proxy=$(pam_getenv http_proxy)

@ ma08 ¿Cuál es el resultado de gsettings get org.gnome.system.proxy mode; gsettings get org.gnome.system.proxy.http host; gsettings get org.gnome.system.proxy.http port;?
muru

Ahora tengo el problema, cuando ejecuto el script como usuario normal, aparece la advertencia (process:9662): dconf-WARNING **: failed to commit changes to dconf: Could not connect: Connection refusedpara cada comando en gsettings. Si lo ejecuto como root, funciona bien, pero el resultado de los comandos anteriores (get) son los modificados solo en la raíz pero no en el usuario normal.
ma08

Aaarghh .. El maldito guión está lleno de errores. Eso son tres que he tenido que arreglar. : / En el segundo sudo tee, tenga en cuenta que el nombre del archivo es /etc/environmenty no /etc/apt/apt.conf. Puede que tenga que eliminar las entradas de basura en apt.conf.
muru

El problema parece ser la advertencia que dije en el comentario anterior.
ma08

1
Gracias, su script funciona y esa respuesta en el enlace ayudó a superar ese error. Debería haber hecho la depuración yo mismo. Muchas gracias.
ma08

3

Hice una herramienta, ProxyMan, para simplificar toda la tarea. Puedes descargarlo desde este enlace .

Además, puede echar un vistazo al código si está más interesado en conocer el funcionamiento del backend. Descargue el archivo zip, extráigalo, vaya a la ubicación de los archivos extraídos en la terminal y los siguientes comandos lo ayudarán:

  • bash main.sh: para configurar y desarmar proxy.
  • bash proxy_check.sh: para verificar su configuración actual de proxy.

1
¡Esta es una pequeña herramienta increíble! ¡Me ahorró un montón de trabajo!
Gh0sT

-2

Creo que esto debería evitar dolores de cabeza:

Video de configuración de proxy

Un excelente tutorial, que se ejecuta en python. Establecer configuraciones de proxy simples y autenticadas en Ubuntu 12.04 / 12.10 / 13.04 / 13.10 / 14.04 / 14.10 y superior 100% de trabajo.

Solución 1 El sistema debe estar instalado "python". Con el intérprete ejecutando el 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 "

Solución 2: comandos:

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

Complete los campos según corresponda:

- Proxy server
- Proxy port
- User
- Password

2
Para que esto sea una buena respuesta, al menos debe describir los pasos.
Julie Pelletier
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.