Definir configurações de proxy do sistema Ubuntu sem reiniciar a partir da linha de comando

14

Eu estou usando Ubuntu 14.04. Eu quero alterar as http proxyconfigurações na linha de comando. Isso deve ser equivalente a alterar na GUI (Todas as configurações-> Rede-> Proxy de rede) e clicar no botão Apply System Wide. Não quero reiniciar / sair do sistema, pois planejo alterar as configurações dinamicamente a partir de um script ( bash).

ma08
fonte
askubuntu.com/questions/175172/… . No comentário da resposta, diz para fazer sudo service network manager restart.
Ramesh
@Ramesh não funciona. Eu já passei por essa pergunta.
MA08

Respostas:

15

Pelo que entendi, a configuração de proxies em todo o sistema por meio dessa GUI faz três coisas:

  1. Defina os valores correspondentes no banco de dados dconf.
  2. Defina os valores em /etc/environment.
  3. Defina os valores em /etc/apt/apt.conf.

1 e 3 entram em vigor imediatamente. /etc/environmenté analisado no login, portanto, você precisará sair e fazer login para que isso entre em vigor. (Observe que esse login é adequado, não apenas executando um shell de login.) O script a seguir deve ser equivalente (assumindo 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

Mesmo que exija um novo login para que o PAM seja aplicado em /etc/environmentqualquer lugar, em um shell atual você ainda pode extrair os valores nesse arquivo:

export http_proxy=$(pam_getenv http_proxy)
muru
fonte
@ ma08 Qual é a saída gsettings get org.gnome.system.proxy mode; gsettings get org.gnome.system.proxy.http host; gsettings get org.gnome.system.proxy.http port;?
Muru
Agora eu entendi o problema, quando executo o script como usuário normal, o aviso aparece (process:9662): dconf-WARNING **: failed to commit changes to dconf: Could not connect: Connection refusedpara cada comando no gsettings. Se eu executá-lo como root, ele funciona bem, mas a saída dos comandos acima (get) são os alterados apenas na raiz, mas não no usuário normal.
precisa saber é
Aaarghh .. O maldito script está cheio de bugs. São três que eu tive que consertar. : / No segundo sudo tee, observe que o nome do arquivo é /etc/environmente não /etc/apt/apt.conf. Pode ser necessário excluir as entradas de lixo no apt.conf.
Muru
O problema parece ser o aviso que eu disse no comentário anterior.
ma08 26/08/14
1
Obrigado, seu script funciona e essa resposta no link ajudou a solucionar esse erro. Eu deveria ter feito a depuração sozinho. Muito obrigado.
MA08
3

Eu fiz uma ferramenta, ProxyMan, para simplificar toda a tarefa. Você pode baixá-lo neste link .

Além disso, você pode dar uma olhada no código se estiver mais interessado em saber o funcionamento do back-end. Faça o download do arquivo zip, extraia-os, vá para o local dos arquivos extraídos no terminal e os seguintes comandos o ajudarão:

  • bash main.sh: para definir e desabilitar o proxy.
  • bash proxy_check.sh: para verificar suas configurações atuais de proxy.
Himanshu Shekhar
fonte
1
Esta é uma pequena ferramenta incrível! Me salvou uma tonelada de trabalho!
Gh0sT 17/0518
-2

Eu acho que isso deve evitar dores de cabeça:

Vídeo de configurações de proxy

Um excelente tutorial, rodando em python. Definindo configurações de proxy simples e autenticadas no Ubuntu 12.04 / 12.10 / 13.04 / 13.10 / 14.04 / 14.10 e acima de 100% funcionando.

Solução 1 O sistema deve estar instalado "python". Com o intérprete executando o comando: Command: "sudo python setproxy.py [Proxy_Server] [proxy_port] [PROXY_USER] [proxy_password]"

Vídeo: https://www.youtube.com/watch?v=eBtzKa-dvJg

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

Solução 2: comandos:

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

Preencha os campos conforme apropriado:

- Proxy server
- Proxy port
- User
- Password
Felix Aballi
fonte
2
Para transformar isso em uma boa resposta, você deve, no mínimo, descrever as etapas.
Julie Pelletier