2

我正在编写一个 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 端做这件事,但我的尝试很荒谬,我不会在这里发布它们。我确实发现你不能在那边做两个以上的过滤器(除非我也搞砸了)

有任何想法吗?

4

1 回答 1

1

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

.Reservations[].Instances |
    map(select(.Platform != "Windows") | .NetworkInterfaces[].PrivateIpAddress)
于 2014-11-06T22:22:12.043 回答