скрипт curl and bash, выполняющий почтовый запрос с токеном на предъявителя - PullRequest
0 голосов
/ 05 июня 2018

Пожалуйста, просветите меня!

Мой сценарий:

#!/usr/bin/env bash

username="zDISABLEDc"
rand="Z01c20a936f474b"

single_quote="'"
curl_string_part1_="-X PUT https://api.secretkgbwebsite.com/api/v4.1/user/$username "
curl_string_part2_='-H "Authorization: bearer 00000000-4cd9-4bc6-90da-5d43a155f30e" -H "Cache-Control: no-cache" -H "Content-Type: application/json" -H "Postman-Token: 351e4bf1-04a2-4c99-8a21-21a05f51244a" -d '
curl_string_part3_='{"password": "'
curl_string_part4_='"}'

curl_string_complete="$curl_string_part1_$curl_string_part2_$single_quote$curl_string_part3_$rand$curl_string_part4_$single_quote"

echo $curl_string_complete
echo " "
success=0
curl $curl_string_complete && success=1

if ((success)); then
    echo "SUCCESS. password has been reset to : "
    echo $rand
else
    echo "problem sending and resetting password."
fi

Я получаю следующие ошибки:

{"error": "unauthorized",«error_description»: «Объект аутентификации не найден в SecurityContext»} curl: (6) Не удалось разрешить host: bearer
curl: (6) Не удалось разрешить host: 00000000-4cd9-4bc6-90da-5d43a155f30e "
curl: (6) Не удалось разрешить хост: no-cache "
curl: (6) Не удалось разрешить хост: приложение
curl: (6) Не удалось разрешить хост: 351e4bf1-04a2-4c99-8a21-21a05f51244a "
curl: (3) [globbing] непревзойденная закрывающая скобка / скобка в столбце 18

Теперь раздражает то, что, если я запускаю строку, моя программа выводит эхо (этоline: echo $curl_string_complete) с curl, curl счастлив и запускает строку без проблем.

1 Ответ

0 голосов
/ 05 июня 2018

у вас возникли проблемы с процессом расширения оболочки, более подробную информацию смотрите в руководствах по bash и руководствах по оболочке posix.синтаксические кавычки обрабатываются до раскрытия переменных, поэтому кавычки внутри переменных являются буквальными.В случае эха переменные разделяются, но из-за того, что эхо соединяется пробелом, этого не видно.

измените echo $curl_string_complete на printf "<%s>\n" $curl_string_complete, чтобы увидеть, как аргументы разделяются.

длярешить проблему, вы можете использовать массивы, например:

curl_string_part1_=( -X PUT https://api.secretkgbwebsite.com/api/v4.1/user/$username )

curl_string_part2_=(-H "Authorization: bearer 00000000-4cd9-4bc6-90da-5d43a155f30e" -H "Cache-Control: no-cache" -H "Content-Type: application/json" -H "Postman-Token: 351e4bf1-04a2-4c99-8a21-21a05f51244a" -d )
curl_string_part3_='{"password": "'
curl_string_part4_='"}'

curl_string_complete=( "${curl_string_part1_[@]}" "${curl_string_part2_[@]}" "$curl_string_part3_$rand$curl_string_part4_" )

curl "${curl_string_complete[@]}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...