如何在 bash 脚本中从命令行登录到 Azure 帐户

lea*_*ner 0 syntax bash azure-cli

我创建了一个 bash 脚本,因为我想通过 Jenkins 作业启动和停止虚拟机。脚本内容如下

!/bin/bash

set -x


applicationId = "xxxxxxxxxxxxxxxx"
tenantID="xxxxxxxxxxxxxxxxx"
password = "jenkins"
    
az login --service-principal --username "${applicationId}" --password "{$password}" --tenant "{tenantID}"

export resource_group=rg_networking
# declare an array variable
declare -a host_list=("<Array of Host Space sepperated>")

## now loop through the above array
for i in "${host_list[@]}"
do
   echo "Stopping Virtual Machine $i"
   az vm stop --name "${i}" --resource-group "${resource_group}"
done

exit 0
Run Code Online (Sandbox Code Playgroud)

运行 Jenkins 作业时收到的错误消息如下:

Get Token request returned http error: 400 and server response: {"error":"invalid_request","error_description":"AADSTS90002: Requested tenant identifier '{tenantid}' is not valid and not valid external domain format\r\nTrace ID: 1bb4c96a-c26c-48a3-b502-7d8b17b90800\r\nCorrelation ID: 2b01e6aa-0fd6-4a52-878b-f829d5d02152\r\nTimestamp: 2018-11-06 23:42:36Z","error_codes":[90002],"timestamp":"2018-11-06 23:42:36Z","trace_id":"1bb4c96a-c26c-48a3-b502-7d8b17b90800","correlation_id":"2b01e6aa-0fd6-4a52-878b-f829d5d02152"}
Run Code Online (Sandbox Code Playgroud)

以及在每个 az stop vm Stement ix 执行后出现以下错误。

ERROR: Please run 'az login' to setup account.
Run Code Online (Sandbox Code Playgroud)

无法理解是什么问题?

任何人都可以帮助我吗?

谢谢

Joy*_*ang 5

第一个错误是由这部分引起的,你错过了$你的命令。

az login --service-principal --username "${applicationId}" --password "{$password}" --tenant "{tenantID}"
Run Code Online (Sandbox Code Playgroud)

试试下面的命令,它在我这边工作正常。

az login --service-principal --username "${applicationId}" --password "${password}" --tenant "${tenantID}"
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

登录后,ERROR: Please run 'az login' to setup account.错误也将得到修复。