当前位置: 首页>>技术教程>>正文


如何在Xubuntu,Lubuntu或Ubuntu Studio中设置system-wide代理服务器?

, , , ,

问题描述

我无法在任何地方找到代理设置。我是否必须通过gconftools通过终端进行设置,还是有一些GUI存在?

最佳解决思路

Ubuntu Studio,Xubuntu和XFCE中的System-wide代理必须通过环境变量

Ubuntu Studio与Xubuntu一样使用XFCE桌面环境,该环境不包含图形设置工具来设置系统范围代理(unlike the default Ubuntu desktop environment, Unity)。

1.为大多数程序设置代理/代理

  • gksudo leafpad(或您最喜欢的编辑器)打开/etc/environment文件。该文件存储启动时初始化的system-wide变量。

  • 添加以下行,并进行适当修改。您必须在upper-case和lower-case中复制,因为(不幸的是)某些程序仅查找其中一个程序:http_proxy = http://myproxy.server.com:8080 /https_proxy = http://myproxy.server.com:8080 /ftp_proxy = http://myproxy.server.com:8080 /no_proxy =“localhost,127.0.0.1,localaddress,.localdomain.com”HTTP_PROXY = http://myproxy.server.com:8080 /HTTPS_PROXY = http://myproxy.server.com:8080/FTP_PROXY = http://myproxy.server.com:8080 /NO_PROXY =“localhost,127.0.0.1,localaddress,.localdomain.com”

2.然后为GTK3程序设置代理,例如Rhythmbox:

一些较新的GTK3程序(如Rhythmbox)忽略了上面设置的环境变量,而是依赖于Gnome设置。为了确保它们被覆盖,请打开一个终端并粘贴下面的line-by-line,并根据需要进行修改:

gsettings set org.gnome.system.proxy mode 'manual' 
gsettings set org.gnome.system.proxy.http host 'myproxy.server.com'
gsettings set org.gnome.system.proxy.http port 8080

3.最后,设置apt-get和更新管理器的代理

  • 这些程序也不会服从环境变量。在/etc/apt/apt.conf.d/中创建一个名为95proxies的文件,并包含以下内容:Acquire :: http :: proxy“http://myproxy.server.com:8080/”;获取:: ftp :: proxy “ftp://myproxy.server.com:8080/”; Acquire :: https :: proxy“https://myproxy.server.com:8080/”;

最后,注销并重启以确保更改生效。


来源:123。特别参见1,以获取更多帮助,包括快速打开/关闭代理的脚本。


打开/关闭代理服务器的脚本:

免责声明::在继续之前,请注意我已经在Lubuntu 14.04上尝试了这一点,重要的是在你运行所提到的脚本之前,文件/etc/environment应该只有一行,即’$PATH…’,并且文件中没有其他内容,否则您可能需要修改脚本的代码。这些脚本如上所述设置和取消设置代理,但它们依赖文件截断和文件附加来更改/etc/environment/etc/apt/apt.conf.d/95proxies文件。所以请确保:

1)/etc/environment只包含一行,即’$PATH:…’。没有别的。

2)文件/etc/apt/apt.conf.d/95proxies不存在或没有任何重要的内容。

所以!如果您希望自动执行打开和关闭代理的过程,而不必键入分配。您可以创建两个可执行的shell脚本proxyon.shproxyoff.sh,如下所示:

proxyon.sh:

if [ $(id -u) -ne 0 ]; then
  echo "This script must be run as root";
  exit 1;
fi

if [ $# -eq 2 ]
  then

  gsettings set org.gnome.system.proxy mode 'manual' ;
  gsettings set org.gnome.system.proxy.http host '$1';
  gsettings set org.gnome.system.proxy.http port $2;


  grep PATH /etc/environment > lol.t;
  printf \
  "http_proxy=http://$1:$2/\n\
  https_proxy=http://$1:$2/\n\
  ftp_proxy=http://$1:$2/\n\
  no_proxy=\"localhost,127.0.0.1,localaddress,.localdomain.com\"\n\
  HTTP_PROXY=http://$1:$2/\n\
  HTTPS_PROXY=http://$1:$2/\n\
  FTP_PROXY=http://$1:$2/\n\
  NO_PROXY=\"localhost,127.0.0.1,localaddress,.localdomain.com\"\n" >> lol.t;

  cat lol.t > /etc/environment;


  printf \
  "Acquire::http::proxy \"http://$1:$2/\";\n\
  Acquire::ftp::proxy \"ftp://$1:$2/\";\n\
  Acquire::https::proxy \"https://$1:$2/\";\n" > /etc/apt/apt.conf.d/95proxies;

  rm -rf lol.t;

  else

  printf "Usage $0 <proxy_ip> <proxy_port>\n";

fi

proxyoff.sh

if [ $(id -u) -ne 0 ]; then
  echo "This script must be run as root";
  exit 1;
fi

gsettings set org.gnome.system.proxy mode 'none' ;

grep PATH /etc/environment > lol.t;
cat lol.t > /etc/environment;

printf "" > /etc/apt/apt.conf.d/95proxies;

rm -rf lol.t;

如何使用:一旦你制作了这些脚本,让它们可执行,你可以将它们保留在任何你喜欢的地方。要打开代理,您只需转到包含’proxyon.sh’脚本的目录,然后输入sudo ./proxyon.sh {host} {port}即可。举一个例子,考虑一下:

 $ sudo ./proxyon.sh 10.2.20.17 8080
 OR
 $ sudo ./proxyon.sh myproxy.server.com 8080

‘10.2.20.17’是代理服务器的IP – 您也可以输入类似myproxy.server.com的内容 – 并且’8080’是端口。之后,只需注销并登录到您的帐户,以确保所有设置。你可以开始使用互联网或其他任何东西。当您想关闭代理时,转到包含’proxyoff.sh’的目录并输入:

 $ sudo ./proxyoff.sh

这将取消所有的代理。现在注销并再次登录切换到正常模式。

次佳解决思路

有一个名为UbProxy的图形工具,通过图形界面(GUI)设置整个系统代理。唯一的问题是我必须注销我的用户并再次登录才能加载配置。使用非常简单。 https://code.google.com/p/ubproxy/

第三种解决思路

我有一些处理这个问题的功能。像这样称呼他们:

myProxyOn

https://gist.github.com/fernando-basso/6352040

#!/usr/bin/env bash

# gsettings list-recursively org.gnome.system.proxy

# Change de ip address and port number accordingly.
function myProxyOn() {
    gsettings set org.gnome.system.proxy mode 'manual' # ' manual / nome / automatic '
    gsettings set org.gnome.system.proxy.http host '10.0.0.1'
    gsettings set org.gnome.system.proxy.http port 8080
    gsettings set org.gnome.system.proxy.https host '10.0.0.1'
    gsettings set org.gnome.system.proxy.https port 8080
    gsettings set org.gnome.system.proxy.ftp host '10.0.0.1'
    gsettings set org.gnome.system.proxy.ftp port 8080

    echo "Configuração do 'System Proxy' settada para 'manual', com host 10.0.0.1, port 8080."
}

function myProxyOff() {
    gsettings set org.gnome.system.proxy mode 'none' # ' manual / nome / automatic '
    echo "Proxy cofigurado para 'none'."
}

function proxyOn() { # {{{
    #echo -n 'Username: '
    #read -e username
    #echo -n 'Password: '
    #read -es password
    #echo ''
    echo 'Setting variable "http_proxy"...'
    #export http_proxy="http://$username:$password@172.17.0.1:8080/"
    export http_proxy="http://10.0.0.1:8080/"
    echo 'Setting variable "https_proxy..."'
    export https_proxy="https://10.0.0.1:8080/"
    echo 'Setting variable "ftp_proxy"...'
    #export ftp_proxy="http://$username:$password@172.17.0.1:8080/"
    export ftp_proxy="ftp://10.0.0.1:8080/"
    echo 'Done!'
}

function proxyOff() {
    unset HTTP_PROXY
    unset http_proxy
    unset FTP_proxy
    unset ftp_proxy
    echo -e "\nProxy environment variables removed!"
}

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/924.html,未经允许,请勿转载。