apt-get落后代理。用户名和密码中的特殊字符

时间:2012-02-14 18:26:28

标签: linux ubuntu-10.04 apt-get

我想设置apt-get在我的ubuntu盒子上使用代理。我已成功配置synaptic以使用代理,因此我可以安装软件包,但我希望能够使用命令行。

我的工作代理需要用户名和密码,两者都有特殊字符。

.bashrc我有

export http_proxy="http://user@company:P@$$1234@10.20.30.40:80/"

但是,这不起作用。

我也试过逃避特殊字符,但这似乎也不起作用:

export http_proxy="http://user\@company:P\@\$\$1234@10.20.30.40:80/"

2 个答案:

答案 0 :(得分:6)

似乎是两件事的组合。我需要为特殊字符使用转义码,我需要向/etc/apt/apt.conf添加条目。 (据说,导出_proxy环境变量应该使apt-get工作,但我没有那么幸运。)

/etc/apt/apt.conf

APT::Get::AllowUnauthenticated 1;
Acquire::http::proxy "http://user%40company:P%40%24%241234@10.20.30.40:80/";
Acquire::ftp::proxy "ftp://user%40company:P%40%24%241234@10.20.30.40:80/";
Acquire::https::proxy "https://user%40company:P%40%24%241234@10.20.30.40:80/";

.bashrc

export http_proxy="http://user%40company:P%40%24%241234@10.20.30.40:80/";
export ftp_proxy="ftp://user%40company:P%40%24%241234@10.20.30.40:80/";
export https_proxy="https://user%40company:P%40%24%241234@10.20.30.40:80/";

答案 1 :(得分:1)

更简单,更可靠!

常规语法:

sudo {http,https,ftp}_proxy=http://<username>:<password>@<proxy_url/_proxyip>:<port>/

wget --timeout=5 --no-check-certificate http://<website_url>

示例:

[root@localhost ~]# sudo {http,https,ftp}_proxy=http://username:password-123@proxy.example.com:6050/

wget --timeout=5 --no-check-certificate http://google.com

{http,https,ftp} _proxy -> http,https,ftp网址。用逗号分隔。

-timeout = 5 ->连接可在几秒钟内保持活动状态。

-不检查证书->忽略SSL /证书验证。

-蜘蛛->如果要在不下载文件的情况下测试连接性。

注释:

在线转换器:

用等效的十六进制unicode替换特殊字符。 有关Unicode列表,请访问网站https://unicode-table.com(或)http://unicodelookup.com

使用Python的本地转换器:

参考:密码“ p @ s#w:E”到unicode的转换如下,

@ = %40
$ = %24
# = %23
: = %3A
p@s#w:E = p%40s%23w%3AE

输入:

[root@localhost ~]# python -c "import sys, urllib as enc; print enc.quote_plus(sys.argv[1])" "p@s#w:E"

输出:

p%40s%23w%3AE