Suponha que, para fins de argumentação, minha senha abaixo sejaabc123@
Preciso autenticar minha máquina Linux através de um proxy corporativo para obter patches e atualizações... normalmente eu usaria isto:
export HTTP_PROXY='http://<Americas\Username>:<Password>@proxy.foo.com'
export http_proxy='http://<Americas\Username>:<Password>@proxy.foo.com'
No entanto, quando substituo uma senha real que termina com @
e depois executo aptitude update
, recebo...
[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'
Eu tentei escapar da senha com \@
, escapando de ambos com \@\@
, caracteres duplos ( @@
), e nada parece fazer com que isso seja feito no proxy corretamente; Nunca tive problemas até alterar minha senha recentemente.
Qual é a maneira correta de escapar da minha senha bash
?
Responder1
Você poderia tentarCodificação de URLsua senha. @
deve ser substituído por %40
.
Lidando com caracteres especiais em senhas proxy no Linuxindica que isso deve funcionar, mas olhar em volta de outras pessoas parece não fazer isso funcionar (e não tenho como testar isso).
Responder2
Ainda mais simples e confiável!
Sintaxe Geral:
sudo {http,https,ftp}_proxy=http://<username>:<password>@<proxy_url/_proxyip>:<port>/ wget --timeout=5 --no-check-certificate http://<website_url>
Exemplo:
[root@localhost ~]# sudo {http,https,ftp}_proxy=http://username:[email protected]:6050/ wget --timeout=5 --no-check-certificate http://google.com
{http,https,ftp}_proxy -> urls http, https, ftp. Separados por vírgula.
--tempo limite=5 -> Conexão para se manter vivo em segundos.
-sem-certificado de verificação -> Ignorar verificação de SSL/certificado.
--aranha -> Se quiser testar a conectividade sem baixar o arquivo.
Notas:
Conversor on-line:
Substitua os caracteres especiais pelo seu Unicode hexadecimal equivalente. Para obter uma lista de unicodes, consulte o sitehttps://unicode-table.com(ou)http://unicodelookup.com
Conversor local usando Python:
Referência:a conversão da senha "p@s#w:E" para unicode será a seguinte,
@ = %40
$ = %24
# = %23
: = %3A
p@s#w:E = p%40s%23w%3AE
Entrada:
[root@localhost ~]# python -c "import sys, urllib as enc; print enc.quote_plus(sys.argv[1])" "p@s#w:E"
Saída:
p%40s%23w%3AE
Responder3
use %40 no lugar de @ na sua senha,
por exemplo:
sua senha é "A@ple123" então use "A%40ple123"