aws ec2 cli + jq исключить результаты

Я пишу сценарий bash, которому нужно получить частные 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, но мои попытки были нелепыми, и я не буду их здесь публиковать. Я обнаружил, что вы не можете использовать более двух фильтров на этой стороне (если я тоже не испортил это)

Есть идеи?


person KingRichard    schedule 06.11.2014    source источник
comment
Как выглядит json?   -  person Jeff Mercado    schedule 07.11.2014


Ответы (1)


Я не использую AWS, поэтому мне нечего делать, кроме как использовать describe-instances, думаю, этот фильтр должен работать.

.Reservations[].Instances |
    map(select(.Platform != "Windows") | .NetworkInterfaces[].PrivateIpAddress)
person Jeff Mercado    schedule 06.11.2014
comment
Достал их тренер! Мне пришлось переключить == на !=, так как я пытаюсь исключить результаты Windows, но это сработало! - person KingRichard; 07.11.2014