Я хочу загрузить файл автоматически в файлы rackspace, для которого требуется обновляемый токен-токен, поэтому я хочу создать скрипт, который получает токен аутентификации, а затем использует его в скрипте для загрузки файла.Использование вывода JSON в скрипте curl bash
Это команда, чтобы получить маркер аутентификации, который выводит ключ отлично:
curl -s -X POST https://auth.api.rackspacecloud.com/v2.0/tokens\
-d '{ "auth":{ "RAX-KSKEY:apiKeyCredentials":{ "username":"USER", "apiKey":"KEY" } } }'\
-H "Content-type: application/json" | python -mjson.tool |\
python -c 'import sys, json;\
print json.load(sys.stdin)[sys.argv[1]][sys.argv[2]][sys.argv[3]]'\
access token id
Это команда для загрузки файла:
curl -X PUT -T file.xml -D - \
-H "Content-Type: text/xml" \
-H "X-Auth-Token: TOKENGOESHERE" \
URL
Мне нужно, чтобы получить маркер из первая команда в место TOKENGOESHERE во второй команде.
То, что я пытался до сих пор:
token = curl -s -X POST https://auth.api.rackspacecloud.com/v2.0/tokens -d '{ "auth":{ "RAX-KSKEY:apiKeyCredentials":{ "username":"USER", "apiKey":"KEY" } } }' -H "Content-type: application/json" | python -mjson.tool | python -c 'import sys, json; print json.load(sys.stdin)[sys.argv[1]][sys.argv[2]][sys.argv[3]]' access token id
curl -X PUT -T file.xml -D - \
-H "Content-Type: text/xml" \
-H "X-Auth-Token: $token" \
URL
, но это не сработало, и я предполагаю, что это что-то делать с кавычками, но я не знаю достаточно о Баш, чтобы знать, что проблема есть.
Спасибо!
Синтаксис для захвата вывода команды является 'маркер = $ (локон ...)'. Вы просто назначаете статическое строковое значение 'token = curl' и получаете сообщение об ошибке (которое вы должны были включить для диагностики), когда параметры после первого пробела предпринимаются в качестве команды. – tripleee
спасибо, я сделал это и попытался повторить его, используя: echo "$ token" и ошибка была токена: команда не найдена. Разве это не правильный способ использования переменных в командах? –
Вам нужно избегать пробелов вокруг знака равенства. – tripleee