【问题标题】:aws ec2 cli + jq exclude resultsaws ec2 cli + jq 排除结果
【发布时间】:2014-11-06 21:41:04
【问题描述】:

我正在编写一个 bash 脚本,它需要获取 describe-instances 不返回 platform=>windows 的所有实例的私有 ip,并将它们存储在数组 $ips 中

这个脚本到目前为止工作正常(只是获取私有 ips)

 ips=$(aws ec2 describe-instances --region $r --filters "Name=tag:Name,Values=*$c*" | jq '.Reservations[].Instances[].NetworkInterfaces[].PrivateIpAddress')

但我不知道如何排除 windows 服务器(或者相反,只包括非 windows 服务器)

这是我尝试过的

--filters "Name=tag:Name,Values=*$c*" "Name=platform,Values="
--filters "Name=tag:Name,Values=*$c*" "Name=platform,Values=null"
--filters "Name=tag:Name,Values=*$c*" "Name=platform,Values=NULL"

我也试过在管道的 jq 端做,但我的尝试很荒谬,我不会在这里发布它们。我确实发现你不能在那边做两个以上的过滤器(除非我也搞砸了)

有什么想法吗?

【问题讨论】:

  • json 长什么样子?

标签: bash amazon-web-services amazon-ec2 aws-cli jq


【解决方案1】:

我不使用 AWS,所以我没有太多工作要做,但基于 describe-instances 参考,我认为这个过滤器应该可以工作。

.Reservations[].Instances |
    map(select(.Platform != "Windows") | .NetworkInterfaces[].PrivateIpAddress)

【讨论】:

  • 有他们的教练!我不得不将 == 切换为 != 因为我试图排除 windows 结果,但它有效!
猜你喜欢
  • 1970-01-01
  • 2017-08-01
  • 2018-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-16
相关资源
最近更新 更多