Encontrei o seguinte nas páginas do github govc govmomi , que me permite pesquisar VMs por endereço MAC:
govc object.collect -json -type m / config.hardware.device \
| jq -r '
.
| select(.ChangeSet[].Val.VirtualDevice[].MacAddress == "00:50:56:bc:5e:3c")
| [.Obj.Type, .Obj.Value]
| join(":")
' \
| xargs govc ls -L
Em anexo, segue um trecho da saída do govc que deve ser suficiente:
{
"Obj": {
"Type": "VirtualMachine",
"Value": "vm-666"
},
"ChangeSet": [
{
"Val": {
"VirtualDevice": [
{
},
{
"MacAddress": "00:50:56:bc:5e:3c"
}
]
}
}
]
}
O problema que estou enfrentando é que alguns MACs contêm letras maiúsculas, algumas minúsculas, e não sei com antecedência qual máquina usa qual esquema. Não consigo descobrir como fazer com que o ==
caso não seja sensível.
Encontrei respostas aqui no stackoverflow que sugerem usar ascii_downcase
como filtro, mas não sei como aplicar isso com o ==
.
A sintaxe sugerida em https://stackoverflow.com/a/62454688 me dá uma sequência de explode input must be a string
erros (1 por linha de saída do govc).
Caso isso seja importante para este exercício: isso está acontecendo em Mac OS 15.1
, jq
é instalado via brew, a versão é 1.7.1
.