我要自動將文件上傳到Rackspace公司需要一個auth令牌每天更新的文件,所以我想創建一個腳本,獲取身份驗證令牌,然後使用該腳本上傳文件。在捲曲bash腳本使用JSON輸出
這是命令來獲得身份驗證令牌,輸出完美的關鍵:
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
謝謝,我這樣做,並試圖用它回聲: 回聲「$令牌」 和錯誤是令牌:未找到命令。這不是在命令中使用變量的正確方法嗎? –
您需要避免在等號周圍留出空白。 – tripleee