导出 HTTP_PROXY 和 passwd 中的特殊字符

导出 HTTP_PROXY 和 passwd 中的特殊字符

假设为了论证,我的密码如下:abc123@

我需要通过公司代理验证我的 Linux 机器以获得补丁和更新......通常我会使用这个:

export HTTP_PROXY='http://<Americas\Username>:<Password>@proxy.foo.com'
export http_proxy='http://<Americas\Username>:<Password>@proxy.foo.com'

但是,当我替换以 结尾的真实密码@然后运行 ​​时aptitude update,我得到...

[mpenning@netwiki ~]$ sudo -E aptitude update
Err http://mirror.anl.gov squeeze Release.gpg
  Could not resolve '@proxy.foo.com'
Err http://mirror.anl.gov/debian/ squeeze/main Translation-en
  Could not resolve '@proxy.foo.com'

我尝试过使用 转义密码\@,使用\@\@双字符 ( @@) 转义密码,但似乎没有任何方法可以正确代理;我从来没有遇到过问题,直到我最近更改了密码。

转义密码的正确方法是什么bash

答案1

你可以尝试URL编码你的密码。@应替换为%40.

处理 Linux 上代理密码中的特殊字符表明这应该有效,但环顾其他人似乎无法使其发挥作用(而且我无法测试这一点)。

答案2

更加简单和可靠!

一般语法:

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:[email protected]:6050/ wget --timeout=5 --no-check-certificate http://google.com

{http、https、ftp}_代理 -> http、https、ftp 网址。用逗号分隔。

--超时=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

答案3

请使用%40代替密码中的@,

例如:

您的密码是“ A@ple123 ”,然后使用“ A%40ple123”

相关内容