ma0*_*a08 15 command-line bash ubuntu proxy
我正在使用Ubuntu 14.04. 我想http proxy从命令行更改设置。这应该等同于在 GUI(所有设置->网络->网络代理)中更改并单击按钮Apply System Wide。我不想重新启动/注销系统,因为我打算从脚本(bash)动态更改设置。
mur*_*uru 16
据我了解,通过该 GUI 在系统范围内设置代理会做三件事:
/etc/environment。/etc/apt/apt.conf。1、3立即生效。/etc/environment在登录时解析,因此您需要注销并登录才能生效。(请注意,这是正确的登录,而不仅仅是运行登录 shell。)以下脚本应该是等效的(假设使用 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
Run Code Online (Sandbox Code Playgroud)
即使 PAM 需要重新登录才能在任何/etc/environment地方应用,但在当前 shell 中,您仍然可以提取该文件中的值:
export http_proxy=$(pam_getenv http_proxy)
Run Code Online (Sandbox Code Playgroud)