资源组中存在资源
Existence of a resource within a resource group
如何检查资源组中是否存在快速路由。我有资源组列表,但并非所有资源组中都有快速路由。检查每个资源组内部是否有快速路由需要写什么条件
rgList ==> 特定订阅中所有资源组的列表
erList ==> 特定订阅中的所有快速路由列表
rgList="$(az group list --subscription "sub1" --query [].name --output tsv)"
erList="$(az network express-route list --subscription "sub1" --query [].name --output tsv)"
for i in $rgList; do
if [[ $(az network express-route list -g "$i" --subscription "sub-network-central-services" --query "[].name | length(@))" > 0 ]]
then
for j in $erList; do
hubname+="$(az network express-route auth list --circuit-name "$j" --resource-group "$i" --query [].authorizations[].name --output tsv)"
done
fi
done
我收到以下错误
bash:意外标记“完成”附近的语法错误
如上所述,是的,在我们的本地环境中测试时出现了一些语法错误,我们已经修复了这些错误并且我们也修改了上述脚本。
修改后的脚本将提取授权名称和 Express-route 电路名称。
如果想得到有express-route电路的资源组列表可以直接参考我的解决方案中的替代脚本。
这是修改后的 Bash 脚本:
hubname=""
rglist=$(az group list --subscription "<subNameorSubId>" --query [].name --output tsv)
erList=$(az network express-route list --subscription "<subNameorSubId>" --query [].name --output tsv)
for i in $rglist;
do
if [[ $(az network express-route list -g $i --subscription "<subNameorSubId>" --query "[].name | length(@)") > 0 ]]
then
for j in $erList;
do
hubname+=$(az network express-route auth list --circuit-name $j --resource-group $i --query [].name --output tsv)
echo $j,$hubname
done
fi
done
这里是示例输出截图以供参考:
或者,您可以使用下面的 bash 脚本,如果其中存在 express-route 电路,这将为您提供资源组列表。
替代脚本:
rgList=$(az group list --subscription "<SubNameorSubId>" --query [].name --output tsv)
for i in $rgList;do
resourcelist=$(az resource list -g $i --query [].type -o tsv)
for j in $resourcelist;do
if [[ $j == "Microsoft.Network/expressRouteCircuits" ]]
then
echo $i
fi
done
done
这里是示例输出以供参考:
如何检查资源组中是否存在快速路由。我有资源组列表,但并非所有资源组中都有快速路由。检查每个资源组内部是否有快速路由需要写什么条件
rgList ==> 特定订阅中所有资源组的列表
erList ==> 特定订阅中的所有快速路由列表
rgList="$(az group list --subscription "sub1" --query [].name --output tsv)"
erList="$(az network express-route list --subscription "sub1" --query [].name --output tsv)"
for i in $rgList; do
if [[ $(az network express-route list -g "$i" --subscription "sub-network-central-services" --query "[].name | length(@))" > 0 ]]
then
for j in $erList; do
hubname+="$(az network express-route auth list --circuit-name "$j" --resource-group "$i" --query [].authorizations[].name --output tsv)"
done
fi
done
我收到以下错误 bash:意外标记“完成”附近的语法错误
如上所述,是的,在我们的本地环境中测试时出现了一些语法错误,我们已经修复了这些错误并且我们也修改了上述脚本。
修改后的脚本将提取授权名称和 Express-route 电路名称。
如果想得到有express-route电路的资源组列表可以直接参考我的解决方案中的替代脚本。
这是修改后的 Bash 脚本:
hubname=""
rglist=$(az group list --subscription "<subNameorSubId>" --query [].name --output tsv)
erList=$(az network express-route list --subscription "<subNameorSubId>" --query [].name --output tsv)
for i in $rglist;
do
if [[ $(az network express-route list -g $i --subscription "<subNameorSubId>" --query "[].name | length(@)") > 0 ]]
then
for j in $erList;
do
hubname+=$(az network express-route auth list --circuit-name $j --resource-group $i --query [].name --output tsv)
echo $j,$hubname
done
fi
done
这里是示例输出截图以供参考:
或者,您可以使用下面的 bash 脚本,如果其中存在 express-route 电路,这将为您提供资源组列表。
替代脚本:
rgList=$(az group list --subscription "<SubNameorSubId>" --query [].name --output tsv)
for i in $rgList;do
resourcelist=$(az resource list -g $i --query [].type -o tsv)
for j in $resourcelist;do
if [[ $j == "Microsoft.Network/expressRouteCircuits" ]]
then
echo $i
fi
done
done
这里是示例输出以供参考: