議論のために、私のパスワードが以下であると仮定します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」を使用してください