Senha complicada no script bash

1

Eu escrevi um script para chamar API, código como abaixo:

#!/bin/bash    
curl -s "https://openapi.domain.com/api/rest/login?user=khoitran&pass=gkoq@Ggk!5648@#&output=json"

o script não funcionou, então tentei executá-lo fora do script para descobrir o que estava errado. Acontece que meu passe complicado é a causa

vagrant@vagrant-ubuntu-trusty-64:~$ curl -s "https://openapi.domain.com/api/rest/login?user=khoitran&pass=gkoq@Ggk!5648@#&output=json"
-bash: !5648: event not found

(meu passe é: gkoq @ Ggk! 5648 @ #)

Eu tentei várias maneiras de lidar com essa senha (claro, exceto alterá-lo, lol), mas nada funciona. Você poderia, por favor, aconselhar.

    
por Khoi.T 17.07.2017 / 06:15

2 respostas

1

Eu finalmente descobri uma maneira de fazer isso, use um método chamado urlencode para analisar o passe em "gkoq% 40Ggk% 215648% 40% 23" e então colocá-lo diretamente em meus scripts. Para analisar o passe use este link link

    
por Khoi.T 24.07.2017 / 04:42
1

O ! não está sendo traduzido como ! , na verdade, está sendo executado como um comando. Então, coloque sua senha entre aspas simples ' :

'gkoq@Ggk!5648@#'

Você pode testá-lo com uma linha de eco para verificar se está funcionando corretamente:

:~$ echo 'gkoq@Ggk!5648@#'
gkoq@Ggk!5648@#

Agora, defina a variável pass para ela:

:~$ pass='gkoq@Ggk!5648@#'
:~$ echo $pass
gkoq@Ggk!5648@#

Espero que isso ajude!

    
por Terrance 17.07.2017 / 06:23