Сложный пароль в сценарии удара

Я записал сценарий для вызова API, кода как ниже:

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

сценарий не работал так, я пытался выполнить его вне сценария для обнаружения что неправильно. Оказывается, что моя сложная передача является причиной

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

(моя передача: gkoq@Ggk! 5 648 @#)

Я попробовал несколько способов иметь дело с тем паролем (конечно, кроме изменения это, lol), но ничто не работает. Вы могли советовать.

1
задан 17 July 2017 в 07:15

2 ответа

Я наконец узнал способ сделать это, использовать метод, названный urlencode для парсинга передачи в "gkoq%40Ggk%215648%40%23", затем помещает его непосредственно в мои сценарии. Для парсинга передачи используют эту ссылку https://www.tools4noobs.com/online_php_functions/urlencode/

1
ответ дан 7 December 2019 в 13:31

! не становится переведенным как a !, это на самом деле выполняет его как команду. Так, монтируйте в корпус свой пароль в одинарных кавычках ':

'gkoq@Ggk!5648@#'

Можно протестировать его со строкой эха, чтобы удостовериться, что это работает правильно:

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

Теперь, установите pass переменная к нему:

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

Надеюсь, это поможет!

1
ответ дан 7 December 2019 в 13:31

Другие вопросы по тегам:

Похожие вопросы: