我需要存储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 ''
我会很感激与此有关的所有提示
答案 0 :(得分:2)
我不确定您的问题,但对于Azure云Shell中类似问题的解决方案是,如果选择了Powershell,则应在SERVER_IP变量前加一个美元符号。像这样的东西然后就起作用了
$SERVER_IP=$(az vm show --name vmname --resource-group rgname --show-details --query [publicIps] --output tsv)
答案 1 :(得分:1)
修改
您发布的命令丢失了获取私有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[*]}