Définir les paramètres du proxy du système Ubuntu sans redémarrer à partir de la ligne de commande

14

J'utilise Ubuntu 14.04. Je souhaite modifier les http proxyparamètres à partir de la ligne de commande. Cela devrait être équivalent à changer dans l'interface graphique (Tous les paramètres-> Réseau-> Proxy réseau) et à cliquer sur le bouton Apply System Wide. Je ne veux pas redémarrer / déconnecter le système car je prévois de modifier dynamiquement les paramètres à partir d'un script ( bash).

ma08
la source
askubuntu.com/questions/175172/… . Dans le commentaire de la réponse, il dit de faire sudo service network manager restart.
Ramesh
@Ramesh cela ne fonctionne pas. J'ai déjà parcouru cette question.
ma08

Réponses:

15

D'après ce que je comprends, la définition de procurations à 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/environmentest analysé lors de la connexion, vous devrez donc vous déconnecter et vous connecter pour que cela prenne effet. (Notez qu'il s'agit d'une connexion appropriée, et non simplement de l'exécution d'un shell de connexion.) Le script suivant doit être équivalent (en supposant des 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

Même si cela nécessite une reconnexion pour que PAM s'applique /etc/environmentpartout, dans un shell actuel, vous pouvez toujours extraire les valeurs de ce fichier:

export http_proxy=$(pam_getenv http_proxy)
muru
la source
@ ma08 Quelle est la sortie 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
Maintenant, je reçois le problème, lorsque (process:9662): dconf-WARNING **: failed to commit changes to dconf: Could not connect: Connection refusedj'exécute le script en tant qu'utilisateur normal, l'avertissement apparaît pour chaque commande dans gsettings. Si je l'exécute en tant que root, cela fonctionne bien, mais la sortie des commandes ci-dessus (get) sont celles modifiées uniquement dans la racine mais pas dans l'utilisateur normal.
ma08
Aaarghh .. Le foutu script est jonché de bugs. C'est trois que j'ai dû régler. : / Dans le second sudo tee, notez que le nom du fichier est /etc/environmentet non /etc/apt/apt.conf. Vous devrez peut-être supprimer les entrées inutiles dans apt.conf.
muru
Le problème semble être l'avertissement que j'ai dit dans le commentaire plus tôt.
ma08
1
Merci, votre script fonctionne et cette réponse dans le lien a aidé à surmonter cette erreur. J'aurais dû faire le débogage moi-même. Merci beaucoup.
ma08
3

J'ai créé un outil, ProxyMan, pour simplifier l'ensemble de la tâche. Vous pouvez le télécharger à partir de ce lien .

En outre, 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 le terminal et les commandes suivantes pourraient vous aider:

  • bash main.sh: pour définir et désactiver le proxy.
  • bash proxy_check.sh: pour vérifier vos paramètres de proxy actuels.
Himanshu Shekhar
la source
1
Ceci est un petit outil génial! M'a sauvé une tonne de travail!
Gh0sT
-2

Je pense que cela devrait éviter les maux de tête:

Vidéo sur les paramètres de proxy

Un excellent tutoriel, exécuté en python. Définition de paramètres de proxy simples et authentifiés dans Ubuntu 12.04 / 12.10 / 13.04 / 13.10 / 14.04 / 14.10 et supérieur 100% de travail.

Solution 1 Le système doit être installé "python". Avec l'interpréteur exécutant la commande: Commande: "sudo python setproxy.py [Proxy_Server] [proxy_port] [PROXY_USER] [proxy_password]"

Vidéo: https://www.youtube.com/watch?v=eBtzKa-dvJg

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

Solution 2: commandes:

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

Remplissez les champs comme il convient:

- Proxy server
- Proxy port
- User
- Password
Felix Aballi
la source
2
Pour en faire une bonne réponse, vous devez au moins décrire les étapes.
Julie Pelletier