Gab*_*aka 1 bash curl rackspace-cloud
我想将文件自动上载到需要每天更新的auth令牌的机架文件中,因此我想创建一个获取auth令牌的脚本,然后在脚本中使用该令牌来上载文件。
这是获取auth令牌的命令,该令牌完美输出密钥:
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
Run Code Online (Sandbox Code Playgroud)
这是上传文件的命令:
curl -X PUT -T file.xml -D - \
-H "Content-Type: text/xml" \
-H "X-Auth-Token: TOKENGOESHERE" \
URL
Run Code Online (Sandbox Code Playgroud)
我需要将令牌从第一条命令放入第二条命令的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
Run Code Online (Sandbox Code Playgroud)
但是它没有用,我想它与引号有关,但是我对bash的了解不足,无法知道问题所在。
谢谢!
这应该工作:
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)["access"]["token"]["id"]')
curl -X PUT -T file.xml -D - \
-H "Content-Type: text/xml" \
-H "X-Auth-Token: $token" \
URL
Run Code Online (Sandbox Code Playgroud)