带有json的azure jmespath查询列表



我从Azure nsg查询中得到了类似的东西

[
{
"access": "Deny",
...
...
"sourceAddressPrefixes": [
"x.x.x.x",
"y.y.y.y"
],
"sourceApplicationSecurityGroups": null,
...
..
},
]

我想从该列表中查询sourceAddressPrefixes,包括x.x.x.xy.y.y.y,以及其他属性。

这些就是我尝试过的:

  • [?direction=='Inbound'].[name,destinationAddressPrefix,sourceAddressPrefix,sourceAddressPrefixes[*],priority]这给了我列表的计数
  • [?direction=='Inbound'].[name,destinationAddressPrefix,sourceAddressPrefix,sourceAddressPrefixes[0:],priority]这仍然给了我计数
  • [?direction=='Inbound']. [name,destinationAddressPrefix,sourceAddressPrefix,sourceAddressPrefixes[],priority]计数仍然
  • [?direction=='Inbound'].[name,destinationAddressPrefix,sourceAddressPrefix,sourceAddressPrefixes[0],priority]这是有效的,但只得到一个值
  • --query "[?direction=='Inbound'].sourceAddressPrefixes[]" --out tsv这是有效的,但没有其他属性

我试过了https://jmespath.org/tutorial.html它只适用于[?direction=='Inbound'].[access,sourceAddressPrefixes],但不适用于命令行,即使在查询中使用引号也是如此。

我在Ubuntu 18.4上运行这个
python jmespath verion 0.9.3

您对Azure CLI命令有误解。我看到你想过滤NSG的入站规则并查看一些属性。如果您想查看入站规则的所有属性:

az network nsg rule list -g groupName--nsg-name nsgName --query "[?direction=='Inbound']"

如果您想查看入站规则的一些属性:

az network nsg rule list -g groupName--nsg-name nsgName --query "[?direction=='Inbound'].[name,destinationAddressPrefix,sourceAddressPrefix,sourceAddressPrefixes,priority]"

但对此,我建议您使用另一种格式:

az network nsg rule list -g charles --nsg-name azurevmNSG --query "[?direction=='Inbound'].{name:name,destinationAddressPrefix:destinationAddressPrefix,sourceAddressPrefix:sourceAddressPrefix,sourceAddressPrefixes:sourceAddressPrefixes,priority:priority}"

这种方式将显示属性的名称和值。如果添加参数-o table,也许阅读起来更方便。

相关内容

  • 没有找到相关文章

最新更新