web-dev-qa-db-fra.com

Définissez les paramètres de proxy du système Ubuntu sans redémarrer de Commandline

J'utilise Ubuntu 14.04. Je veux changer le http proxy Paramètres de la ligne de commande. Cela devrait être équivalent à la modification de l'interface graphique (tous les paramètres-> Network-> Network Proxy) et en cliquant sur le bouton Apply System Wide. Je ne veux pas redémarrer/déconnecter le système car je prévois de modifier les paramètres de manière dynamique d'un script (bash).

14
ma08

D'après ce que je comprends, régler les proxies à l'échelle du système via cette interface graphique fait trois choses:

  1. Définissez les valeurs correspondantes dans la base de données DCONF.
  2. Définissez les valeurs dans /etc/environment.
  3. Définissez les valeurs dans /etc/apt/apt.conf.

1 et 3 prennent effet immédiatement. /etc/environment est analysé sur la connexion, vous devrez donc vous déconnecter et vous connecter à cela pour prendre effet. (Notez que cela se connecte correctement, ne faisant pas simplement une coque de connexion.) Le script suivant doit être équivalent (supposant des proxies 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

Même s'il nécessite une nouvelle connexion pour PAM d'appliquer /etc/environment partout, dans un shell actuel, vous pouvez toujours extraire les valeurs dans ce fichier:

export http_proxy=$(pam_getenv http_proxy)
15
muru

J'ai fait un outil, un proxyman, pour simplifier la tâche entière. Vous pouvez le télécharger à partir de ce lien .

De plus, vous pouvez consulter le code si vous êtes plus intéressé à connaître le fonctionnement du backend. Téléchargez le fichier zip, extrayez-les, accédez à l'emplacement des fichiers extraits dans la borne et les commandes suivantes vous aideraient à:

  • bash main.sh: pour définir et non définitive proxy.
  • bash proxy_check.sh: Pour vérifier vos paramètres de proxy actuels.
3
Himanshu Shekhar