我想设置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/"
答案 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