json 的 azure jmespath 查询列表

azure jmespath query list with json

我有来自 Azure nsg 查询的类似内容

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

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

这些是我试过的:

我在 https://jmespath.org/tutorial.html 中尝试过,它仅在 [?direction=='Inbound'].[access,sourceAddressPrefixes] 中工作正常,但在命令行中没有,即使在查询周围使用引号也是如此。

我是 运行 这个 Ubuntu 18.4
python-jmespath 版本 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.

可能会更方便阅读