Bash

在 passwd 中導出 HTTP_PROXY 和特殊字元

  • July 15, 2018

假設為了論證,我下面的密碼是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

您可以嘗試對密碼進行URL 編碼。@應替換為%40.

在 Linux 上處理代理密碼中的特殊字元表明這應該可以工作,但是環顧其他人似乎無法使其正常工作(而且我無法對此進行測試)。

更加簡單可靠!

一般語法:

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 url。用逗號分隔。

–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

引用自:https://unix.stackexchange.com/questions/42273