Недопустимый синтаксис: Azure CLI с Python

Заранее спасибо, я пытаюсь обновить виртуальную машину Azure. В конце концов мой код получает сертификат из хранилища ключей Azure и сохраняет его в локальном хранилище сертификатов. Мне удалось успешно использовать Azure CLI в Bash. код присутствует ниже

secret=$(az keyvault secret list-versions --vault-name aqrahyhkeyvault --name certificatename --query "[?attributes.enabled].id" --output tsv)

vm_secret=$(az vm secret format --secrets "$secret" --resource-group RAH-AQ --keyvault aqrahyhkeyvault --certificate-store My)

az vm update -g Archive-WSL -n win10new --set osProfile.secrets = "$vm_secret"

Я использую ту же команду, обернув ее в Python, поскольку большая часть моего кода находится в этом формате. Но выдает недопустимую синтаксическую ошибку. Я пробовал все возможные изменения с двойными кавычками и перетасовывал их без везения.

import subprocess
import json

def Update_vm(vault_name,certificate_name,rscgroup_name):
    Secret_command=["az","keyvault","secret","list-versions","--vault-name",vault_name,"--name",certificate_name,"--query","[?attributes.enabled].id","--output","tsv"]
    create_vm=subprocess.run(Secret_command, stdout=subprocess.PIPE, stderr = subprocess.PIPE)
    print(create_vm.stdout)
    vm_secret=["az","vm","secret","format","--secrets",create_vm.stdout,"--resource-group",rscgroup_name,"--keyvault",vault_name,"--certificate-store","My"]
    vm_new_secret=subprocess.run(vm_secret, stdout=subprocess.PIPE, stderr = subprocess.PIPE)
    print(vm_new_secret.stdout)

    update_vm_cmd=["az","vm","update","-g",rscgroup_name,"-n",avm_name,"--set","osProfile.secrets"=vm_new_secret.stdout] //Error is present here saying invalid syntax
    vm_update=subprocess.run(update_vm_cmd, stdout=subprocess.PIPE, stderr = subprocess.PIPE)


if __name__= = "__main__":
    rscgroup_name = "vm-test-group"
    avm_name = "testvm1"
    avm_image = "Win2019Datacenter"
    avm_username = "azuretest"
    avm_password = "mypass"
    avm_size = "Standard_D2_V3"
    vault_name = "aqrahkeyvault"
    certificate_name = "staticwebsite"

    Update_vm(vault_name,certificate_name,rscgroup_name)
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
469
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, что это может быть способ форматирования строки в "osProfile.secrets"=vm_new_secret.stdout Можете ли вы попробовать следующее вместо этого?

update_vm_cmd=["az","vm","update","-g",rscgroup_name,"-n",avm_name,"--set",f"osProfile.secrets = {vm_new_secret.stdout}"]

Другие вопросы по теме