Предположим, ради аргумента, что мой пароль ниже: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/сертификата.
--паук -> Если вы хотите проверить подключение, не загружая файл.
Примечания:
Онлайн-конвертер:
Замените специальные символы на эквивалентный шестнадцатеричный юникод. Список юникодов см. на сайтеhttps://unicode-table.com(или)http://unicodelookup.com
Локальный конвертер с использованием Python:
Ссылка:Преобразование пароля "p@s#w:E" в юникод будет выглядеть следующим образом:
@ = %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"