简体   繁体   中英

Open Stack endpoints API request OS X

I've got the following bash script to parse endpoints 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")

But bash says:

-bash: syntax error near unexpected token `)'

My hoster says, this script works well on Linux-based OS, but no guarantee to work on OS X. What can be the syntax issue?

EDIT:

If i use the following:

curl  -s -H "X-Auth-Token: my_access_token" -X GET "https://api.selvpc.ru/identity/v3/endpoints?interface=public" | python -mjson.tool

JSON parses as expected. But with grep -Pi '^\\s*"url":\\s*".*",?$' I guess it causes grep warning

usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...]

I guess the first problem is grep error?

As @4ae1e1 suggested, please use a JSON processor for the job. jq is great and it's worthwhile investing your time to learn it.

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

That will get you a list of OpenStack API endpoints.

我认为使用python-keystoneclient的python脚本可以更容易理解和维护

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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