匯出 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”

相關內容