如何从 shell 脚本中的 Bluemix Cloudfoundry 应用程序获取“application_uris”?

阿金斯堡

我有一个 Dev Ops 服务管道,我用它来使用 CloudFoundry 和 MongoDB 自动设置 MeteorJS 应用程序(实际上只是一个 NodeJS 应用程序)。

我在 Dev Opts 服务中有以下部署脚本:

```
#!/bin/bash
cf create-service compose-for-mongodb Standard mongodbbuzzy01
cf push "${CF_APP}" --no-start
mongourl=$(cf env ${CF_APP} | egrep -o 'mongodb://.*"' | rev | cut -c 2- | rev); cf set-env ${CF_APP} MONGO_URL $mongourl
cf restage "${CF_APP}"
```

这允许我从 中获取 mongourl VCAP_SERVICES,然后将其设置为 MONGO_URL 环境变量(在 DevOps shell 命令中)

我也需要为ROOT_URLMeteor 需要做同样的事情我上次编写 sed/awk/grep 脚本已经过去了大约 20 年,我需要从cf env文本中提取 Bluemix 应用程序的 URI (它是包含一些 JSON 的文本)。

结果cf env <appname>是文本和 JSON 对象的混合(所以实际上只是文本)

Getting env variables for app buzzy7build in org Buzzy / space dev as [email protected]...
OK

System-Provided:
{
 "VCAP_SERVICES": {
  "compose-for-mongodb": [
   {
    "credentials": {
.... just curring out details
   }
  }
}


{
 "VCAP_APPLICATION": {
  "application_id": "<some app id>",
  "application_name": "<app name>",
  "application_uris": [
   "<the uri I am trying to get>"
  ],
...

所以我需要一些帮助来提取<the uri I am trying to get>使用 Bluemix shellscrip(确定这是 NodeJS,这很容易)

在 Bluemix shell 中没有jq(我知道)所以只是sed,awk,grep等等

任何帮助表示赞赏。

谢谢

伊尼安

做到这一点只有当你可以使用jq解析JSON

 awk '$0 ~ /application_uris/{getline n; gsub("\"|^[[:space:]]+","",n); print n}' file
<domain name>

Awk上面会工作只有当你JSON的结构为

 "application_uris": [
  "<domain name>"
]

中使用的逻辑awk是查找包含application_uris的行,从匹配的行中getline n获取下一行,获取下一行并存储在变量中n从接收到的行中,我们使用 删除"和前导空格gsub()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

cloudfoundry错误推向bluemix

检测CloudFoundry / Bluemix的版本

为什么未检测到Cloudfoundry(Bluemix)应用程序崩溃

如何在cloudfoundry中检查正在运行的应用程序的buildpack

如何从(PHP)Shell脚本中获取数据

如何从bash shell脚本中获取PID

如何在Shell脚本中获取Java应用程序的退出状态,标准输出和标准错误流?

如何从Shell脚本中的派生子进程中获取PID

如何在Shell脚本中获取JSON中向量的大小?

如何在Shell脚本中获取目录中的文件列表?

如何从shell脚本中的文件中获取版本号?

在bluemix自由应用程序中,如何使用server.xml中的Environment变量

如何实现Java应用程序与Shell脚本之间的同步?

如何从Shell脚本创建本机应用程序?

如何编写应用程序安装Shell脚本?

如何在由另一个shell脚本启动的shell脚本中获取`pwd`

swisscom cloudfoundry springboot应用程序中的内存不足

Spring Boot应用程序无法在CloudFoundry中启动

如何从BlueMix中的.php应用程序连接到SQL Database-s2

在BlueMix上的移动应用程序中,如何轻松地对用户进行分组(授权)

如何提供用于在Bluemix应用程序中调用Key Protect服务的凭证?

如何在 CloudFoundry 中添加 cron 作业

如何在shell脚本中执行python程序

如何在Shell脚本中编写程序

Java如何停止程序中先前启动的Shell脚本

如何在Shell脚本中执行python3程序

如何在shell脚本中获取python版本?

如何在Shell脚本中获取psql表记录?

如何使用Shell脚本获取html文件中的特定值