Сложный пароль в скрипте bash

Я написал скрипт для вызова 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! 5648 @ #)

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

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

6 ответов

Наконец-то я нашел способ сделать это, используя метод urlencode, чтобы проанализировать проход в «gkoq% 40Ggk% 215648% 40% 23», а затем поместить его прямо в мои скрипты. Чтобы проанализировать пропуск, используйте эту ссылку https://www.tools4noobs.com/online_php_functions/urlencode/

1
ответ дан 22 May 2018 в 20:29

Наконец-то я нашел способ сделать это, используя метод urlencode, чтобы проанализировать проход в «gkoq% 40Ggk% 215648% 40% 23», а затем поместить его прямо в мои скрипты. Чтобы проанализировать пропуск, используйте эту ссылку https://www.tools4noobs.com/online_php_functions/urlencode/

1
ответ дан 18 July 2018 в 10:10

Наконец-то я нашел способ сделать это, используя метод urlencode, чтобы проанализировать проход в «gkoq% 40Ggk% 215648% 40% 23», а затем поместить его прямо в мои скрипты. Чтобы проанализировать пропуск, используйте эту ссылку https://www.tools4noobs.com/online_php_functions/urlencode/

1
ответ дан 24 July 2018 в 19:31

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

'gkoq@Ggk!5648@#'

Вы можете проверить его с помощью эхо-строки, чтобы убедиться, что он работает правильно:

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

Теперь, установите для него переменную pass:

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

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

1
ответ дан 22 May 2018 в 20:29
  • 1
    Но почему-то ваш метод не работает в моем случае. Я не знаю, почему, echo вернул правильный пароль, но когда он применяется к команде curl, он возвратил «ошибку входа в систему пользователя», я уверен, что пользователь / пароль, который я вставляю, также корректен. Еще одна вещь, которую ваш метод не может применить к скрипту, потому что я уже пробовал это раньше (используйте переменную, затем поместите pass = $ variable в команду curl) и не удалось. – Khoi.T 17 July 2017 в 09:51
  • 2
    @ Khoi.T К сожалению, не имея возможности запускать вашу команду, мы можем только догадываться. Еще одна вещь, прежде чем я рекомендую вам сменить пароль на то, что не имеет! в нем попробуйте ускользнуть от!. Поместите a \ прямо перед!. Удалите одинарные кавычки и попробуйте сделать это как gkoq @ Ggk \! 5648 @ # – Terrance 17 July 2017 в 16:33
  • 3
    Привет Терренс, я, наконец, узнал, как это сделать, используйте метод urlencode для анализа сеанса в «gkoq% 40Ggk% 215648% 40% 23». в любом случае, спасибо за помощь – Khoi.T 17 July 2017 в 19:59
  • 4
    @ Khoi.T Полностью отстроил это. Имеет смысл, поскольку URL-адреса преобразуют специальные символы в другие значения. Рад, что вы нашли, что вы работаете на вас. :) – Terrance 17 July 2017 в 20:14
  • 5
    @ Khoi.T Вы можете написать это как свой ответ. Вы также можете включить любые ссылки, где вы могли бы найти эту информацию. Я думаю, что это действительно хорошо знать, а другие могут споткнуться по одной и той же проблеме. Вы также можете принять свои собственные ответы. – Terrance 19 July 2017 в 06:32

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

'gkoq@Ggk!5648@#'

Вы можете проверить его с помощью эхо-строки, чтобы убедиться, что он работает правильно:

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

Теперь, установите для него переменную pass:

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

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

1
ответ дан 18 July 2018 в 10:10

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

'gkoq@Ggk!5648@#'

Вы можете проверить его с помощью эхо-строки, чтобы убедиться, что он работает правильно:

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

Теперь, установите для него переменную pass:

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

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

1
ответ дан 24 July 2018 в 19:31
  • 1
    Но почему-то ваш метод не работает в моем случае. Я не знаю, почему, echo вернул правильный пароль, но когда он применяется к команде curl, он возвратил «ошибку входа в систему пользователя», я уверен, что пользователь / пароль, который я вставляю, также корректен. Еще одна вещь, которую ваш метод не может применить к скрипту, потому что я уже пробовал это раньше (используйте переменную, затем поместите pass = $ variable в команду curl) и не удалось. – Khoi.T 17 July 2017 в 09:51
  • 2
    @ Khoi.T К сожалению, не имея возможности запускать вашу команду, мы можем только догадываться. Еще одна вещь, прежде чем я рекомендую вам сменить пароль на то, что не имеет! в нем попробуйте ускользнуть от!. Поместите a \ прямо перед!. Удалите одинарные кавычки и попробуйте сделать это как gkoq @ Ggk \! 5648 @ # – Terrance 17 July 2017 в 16:33
  • 3
    Привет Терренс, я, наконец, узнал, как это сделать, используйте метод urlencode для анализа сеанса в «gkoq% 40Ggk% 215648% 40% 23». в любом случае, спасибо за помощь – Khoi.T 17 July 2017 в 19:59
  • 4
    @ Khoi.T Полностью отстроил это. Имеет смысл, поскольку URL-адреса преобразуют специальные символы в другие значения. Рад, что вы нашли, что вы работаете на вас. :) – Terrance 17 July 2017 в 20:14
  • 5
    @ Khoi.T Вы можете написать это как свой ответ. Вы также можете включить любые ссылки, где вы могли бы найти эту информацию. Я думаю, что это действительно хорошо знать, а другие могут споткнуться по одной и той же проблеме. Вы также можете принять свои собственные ответы. – Terrance 19 July 2017 в 06:32

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

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