繁体   English   中英

Open Stack端点API请求OS X

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM