A abordagem geral para resolver esse problema seria interrogar os hosts e não as VMs. As VMs, em teoria, não têm nenhuma ideia de que sejam VMs.
Para isso, assumindo o virtualbox, o comando VBoxManage list runningvms
em um determinado host deve exibir todas as VMs em execução nesse host. Outros hypervisors podem fornecer uma capacidade de script semelhante.
Se você PRECISA de uma solução puramente de rede para o problema, você precisará de alguns switches bem chiques (pense em cisco e afins - não em coisas de consumidor). Um switch gerenciado deve permitir que você veja todos os endereços mac vindos de uma determinada porta. Simplesmente mapeie as portas para os hosts aos quais elas estão conectadas e encontre o MAC no switch.
É assim que nosso administrador de rede rastreia nossas VMs em roaming, já que ele não tem acesso ao ambiente VMWare.
E a longa história curta é: Você não pode obter essa informação do guest você tem que interrogar algo mais acima na cadeia, como o host ou o < strong> switch port .