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.x
和 y.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 版本 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
.
可能会更方便阅读
我有来自 Azure nsg 查询的类似内容
[
{
"access": "Deny",
...
...
"sourceAddressPrefixes": [
"x.x.x.x",
"y.y.y.y"
],
"sourceApplicationSecurityGroups": null,
...
..
},
]
我想从该列表中查询 sourceAddressPrefixes
,包括 x.x.x.x
和 y.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 版本 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
.