Python3无法"az登录"



需要对以下语法进行哪些具体更改以便下面的Python3函数报告az logincli命令已成功,或要报告有用的错误消息,如果没有

当前功能:

以下是我们目前用于尝试从Python程序中az login的函数:

def runShellCommand(commandToRun):
proc = subprocess.Popen( commandToRun,cwd=None, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
while True:
line = proc.stdout.readline()
print("line is: ", line)
if line:
thetext=line.decode('utf-8').rstrip('r|n')
decodedline=ansi_escape.sub('', thetext)
print(decodedline)
else:
break  

当前调用上述功能:

以下是我们目前在Windows 10计算机上调用上述函数的代码:

azdoLoginCmd= "ECHO " + azPat + " | " + "az devops login --organization "+organization 
print("azdoLoginCmd is: ", azdoLoginCmd)
runShellCommand(azdoLoginCmd)
quit("!BREAKPOINT!")  

请注意,azdoLoginCmd变量中的shell命令必须在Windows上运行。

电流输出:

以下是当我们运行上述代码时在Windows CMD中打印的输出:

azdoLoginCmd is:  ECHO pat-value-redacted-for-security | az devops login --organization https://dev.azure.com/OurOrgName
line is:  b''
!BREAKPOINT!

正如您所看到的,即使我们验证了PAT值和组织URL,runShellCommand(...)函数仍返回零输出。

为了提供有意义的返回值,Python3程序可以确定az login是否成功,必须对以上内容进行哪些特定更改

@Nick是对的,在成功登录的情况下,az devops login命令不会产生任何输出。相反,您可以检查无效登录情况,因为如果提供的凭据不正确,您会看到如下错误消息:

Failed to authenticate using the supplied token.

另外请注意,如果您已经以交互方式使用az login登录,或者您正在使用用户名和密码,则不需要提供令牌,因为az devops命令现在支持通过az login登录。但是,您不能通过az login作为服务主体登录。在这种情况下,需要PAT。有关其他登录选项,请查看本文。

最新更新