使用密码中的@输入APT获取更新错误


15

我想更新ubuntu 11.04至apt-get。所以我在下面添加了以下几行apt.conf

export http_proxy=http://username:password@proxyserver.net:port/
export ftp_proxy=http://username:password@proxyserver.netport/

export http_proxy=http://deepak:Deepak@123@12.1.1.1:3128

我的问题是:如何在用户名或密码中插入特殊字符?

例如:我的代理密码是Deepak @ 123,并且出现错误。


6
嗯...那真的是您的密码吗?
内森·奥斯曼

您可以在中导出代理设置.bashrc。在apt.conf您必须使用它的情况下
Nemo

Answers:


23

您需要escape特殊字符。因此\,在@诸如此类的前面放置一个:

export http_proxy=http://deepak:Deepak\@123@12.1.1.1:3128

您也可以使用%40


HTML字符代码的完整列表obkb.com/dcljr/charstxt.html
BBK

在线编码器/解码器:meyerweb.com/eric/tools/dencoder –Jean
-

在/etc/apt/apt.conf里面%40起作用
albfan 2015年

来自此处的URL编码: w3schools.com/tags/ref_urlencode.asp 对我 有用,请参见此处: stackoverflow.com/questions/9282186/…在Ubuntu 10.04.4 LTS上测试。
AjayKumarBasuthkar 2015年

4

点击

  1. 短跑回家
  2. 搜索系统设置
  3. 选择网络
  4. 选择网络代理
  5. 选择手动方式
  6. 设置代理和端口

如果设置正确,您就完成了


4

如果您的密码或用户名包含@您可以按百分比编码(也称为 URL编码),就像%40在代理url中一样。有关更多特殊字符,请参见此处


0

更简单,更可靠!

通用语法:

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- >连接可以在几秒钟内保持活动状态。

-no-check-certificate- >忽略SSL /证书验证。

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

笔记:

在线转换器:

用等效的十六进制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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.