1
resposta

Formatação do resultado de um script

Olá!

Estou criando um script para visualizar informações das máquinas virtuais na Azure. O caso é: Em um trecho, preciso visualizar o uso de armazenamento de disco. O comando está correto, o problema é na saída, que vem quebrado.Queria saber alguma forma de deixar este resultado legível:

$ az vm run-command invoke -g -n --command-id RunPowerShellScript --scripts "Get-PSDrive C |Select Name, Used, Free"

Este comando roda um script no powershell da máquina virtual e retorna para a máquina local.

O resultado está correto, o que eu quero está no objeto "message". Porém, como segue abaixo, ele vem totalmente quebrado e ilegível.

{ "value": [ { "code": "ComponentStatus/StdOut/succeeded", "displayStatus": "Provisioning succeeded", "level": "Info", "message": "Name Used Free\n---- ---- ----\nC 44741718016 91029946368\n\n", "time": null }, { "code": "ComponentStatus/StdErr/succeeded", "displayStatus": "Provisioning succeeded", "level": "Info", "message": "", "time": null } ] }

Eu queria saber como faço para que o retorno seja somente o objeto "message" com "Name","Used" e "Free" acima dos seus correspondentes "C", "44741718016" e "91029946368".

Desde já, obrigado!

1 resposta

Oi Matheus, tudo bem?

Parece que o resultado retornado pelo comando está em um formato de saída que inclui informações adicionais, como os códigos de status e níveis de informação. Para obter apenas o objeto "message" com os dados relevantes, você pode processar a saída usando ferramentas como o jq (uma ferramenta de linha de comando para processamento JSON) ou manipulação direta com um script em Python, por exemplo.

Vou dar exemplos de como você pode fazer isso usando ambas as abordagens:

Usando jq (Linux/Unix):

Se você estiver usando um sistema operacional baseado em Linux ou Unix, o jq é uma ferramenta poderosa para manipular saídas JSON. No seu caso, você pode usar o seguinte comando:

az vm run-command invoke -g <nome_do_grupo> -n <nome_da_vm> --command-id RunPowerShellScript --scripts "Get-PSDrive C | Select Name, Used, Free" --query "value[0].message" | jq -r '.'

O comando jq -r '.' vai formatar a saída JSON de forma legível.

Usando Python:

Se você preferir usar Python para processar a saída JSON, pode fazer assim:

output=$(az vm run-command invoke -g <nome_do_grupo> -n <nome_da_vm> --command-id RunPowerShellScript --scripts "Get-PSDrive C | Select Name, Used, Free" --query "value[0].message")
python -c "import json; data = json.loads('''$output'''); print(data)"

Este trecho de código do Python vai carregar a saída JSON e imprimir de forma legível.

Lembre-se de substituir <nome_do_grupo> e <nome_da_vm> pelos valores reais do seu ambiente.

Um abraço e bons estudos.