我在 govc govmomi github 页面上发现以下内容,它允许我通过 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
请参阅附件中足够的 govc 输出片段:
{
"Obj": {
"Type": "VirtualMachine",
"Value": "vm-666"
},
"ChangeSet": [
{
"Val": {
"VirtualDevice": [
{
},
{
"MacAddress": "00:50:56:bc:5e:3c"
}
]
}
}
]
}
我面临的问题是,有些 MAC 包含大写字母,有些包含小写字母,而且我事先不知道哪台机器使用哪种方案。我不知道如何使大小写==
不敏感。
我在 stackoverflow 上找到了建议使用ascii_downcase
过滤器的答案,但我不知道如何使用它==
。
https://stackoverflow.com/a/62454688中建议的语法给了我一系列explode input must be a string
错误(govc 输出每行 1 个)。
如果这对本练习很重要:这发生在Mac OS 15.1
,jq
是通过 brew 安装的,版本是1.7.1
。