[英]Open Stack endpoints API request OS X
我有以下bash脚本来解析端点JSON:
echo curl -s -H "X-Auth-Token: my_access_token" -X GET "https://api.selvpc.ru/identity/v3/endpoints?interface=public" | python -mjson.tool | grep -Pi '^\s*"url":\s*".*",?$' | awk '{print $2}' | tr -d '"' | sed "s/[%\\\$](tenant_id)s/my_project_id/g")
但是bash说:
-bash:意外令牌')'附近的语法错误
我的托管人说,此脚本在基于Linux的OS上运行良好,但不能保证在OS X上运行。语法问题是什么?
编辑:
如果我使用以下内容:
curl -s -H "X-Auth-Token: my_access_token" -X GET "https://api.selvpc.ru/identity/v3/endpoints?interface=public" | python -mjson.tool
JSON按预期进行解析。 但是用grep -Pi '^\\s*"url":\\s*".*",?$'
我想这会引起grep
警告
用法:grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C [num]] [-e模式] [-f文件] [--binary-files =值] [--color = when] [--context [= num]] [--directories = action] [--label] [--line-buffered] [--null] [pattern] [file ...]
我猜第一个问题是grep错误?
如@ 4ae1e1所建议,请为该作业使用JSON处理器。 jq很棒,值得花时间学习它。
wget https://github.com/stedolan/jq/releases/download/jq-1.5/jq-osx-amd64
mv jq-osx-amd64 jq
chmod u+x jq
curl -s -H "X-Auth-Token: $TOKEN" https://api.selvpc.ru/identity/v3/endpoints?interface=public | \
./jq -r .endpoints[].url
这将为您提供OpenStack API端点列表。
我认为使用python-keystoneclient的python脚本可以更容易理解和维护
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.