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 の URL。カンマで区切ります。

--タイムアウト=5 -> 数秒以内に接続を維持します。

-チェックなし証明書 -> SSL / 証明書の検証を無視します。

- クモ -> ファイルをダウンロードせずに接続をテストしたい場合。

ノート:

オンラインコンバーター:

特殊文字をそれに相当する16進Unicodeに置き換えます。Unicodeのリストについては、Webサイトを参照してください。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」を使用してください

関連情報