M.A*_*hah 6 command-line scripts proxy socks5 system-settings
我正在通过 ssh 隧道使用袜子代理
ssh -D 1080 -f -C -q -N <user>@<server>
Run Code Online (Sandbox Code Playgroud)
当我在 中设置代理时System settings > Network > Network proxy,所有应用程序Chromium, Firefox, apt, ...都在跟随代理。
现在我想写一个自动化的shell脚本,我如何Network proxy通过终端设置?
我发现的只是“使用一些第三方软件,例如Tsocks和...”。但正如我所说,ubuntu 它自己可以在没有任何第三方软件的情况下做到这一点,所以不想使用它们。
我想要的只是使用终端中的命令设置Network proxy。
正如@taifwa 所说,ubuntu中的系统范围代理设置是解决方案。
这是我的脚本:
ssh -D ${LOCAL_PORT} -f -C -q -N ${REMOTE_USER}@${REMOTE_HOST} -p ${REMOTE_PORT}
#set socks setting in System settings > Network > network proxy
gsettings set org.gnome.system.proxy mode 'manual'
gsettings set org.gnome.system.proxy.socks port ${LOCAL_PORT}
gsettings set org.gnome.system.proxy.socks host 'localhost'
gsettings set org.gnome.system.proxy ignore-hosts "['localhost', '127.0.0.0/8', '${LOCAL_RANGE}', '::1']"
sudo su <<-EOF
#environment settings
echo "socks_proxy='socks://localhost:${LOCAL_PORT}/'" >> /etc/environment
#apt settings
echo "Acquire::socks::proxy 'socks://localhost:$LOCAL_PORT/';" >> /etc/apt/apt.conf
EOF
Run Code Online (Sandbox Code Playgroud)
编辑environment和运行需要以 root 身份运行 apt.conf,
编辑:
org.gnome.system.proxy以 root 身份进行编辑对当前用户没有影响,因此它们应该以普通用户身份运行。所以不要用 sudo 运行脚本