需要对以下语法进行哪些具体更改以便下面的Python3函数报告
az login
cli命令已成功,或要报告有用的错误消息,如果没有
当前功能:
以下是我们目前用于尝试从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。有关其他登录选项,请查看本文。