温馨提示:本文翻译自stackoverflow.com,查看原文请点击:linux - Storing Output of Azure CLI command as variable
azure-cli bash linux

linux - 将Azure CLI命令的输出存储为变量

发布于 2020-05-09 12:55:31

我需要存储AZ cli命令的输出,该命令将获取我的私有IP作为变量。

我在bash脚本中使用以下内容:

echo "Fetching Monitoring Server IP"
SERVER_IP=$(az vm show -n ${THIS_VM_NAME} -g ${RSC_GRP_NAME} --query privateIps -o tsv)
echo "$SERVER_IP

似乎这并不起作用,因为当我回显该变量时,它返回为空。

+ THIS_VM_NAME=XXXX-XX-XX-XX-XX
+ echo 'Fetching Monitoring Server IP'
Fetching Monitoring Server IP
++ az vm show -n XXXX-XX-XX-XX-XX3 -g XXXX-XX-XX-XX-XX --query privateIps -o tsv
+ SERVER_IP=
+ echo ''

我将不胜感激对此的任何指示

查看更多

提问者
Samuel Dare
被浏览
23
Charles Xu 2018-11-30 23:46

编辑

您发布的命令丢失了获取专用IP的参数,您可以将命令与参数一起使用,-d或者--show-details像这样:

az vm show -g resourceGrouName -n vmName -d

但是此命令仅获取所有IP,包括辅助IP。

您可以通过如下所示的shell脚本获取每个接口的所有VM主IP:

count=0
while : ; do
    nic=$(az vm nic list -g resourceGroupName --vm-name vmName --query [$count].id -o tsv)
    if [[ $nic == '' ]]; then
        break
    fi
    privateIps[$count]=$(az vm nic show -g resourceGroupName --vm-name vmName --nic $nic --query ipConfigurations[0].privateIpAddress -o tsv)
    let count++

done
echo ${privateIps[*]}