Come faccio a sapere se sto in esecuzione in una macchina virtuale VMware (da Linux)?

StackOverflow https://stackoverflow.com/questions/540907

  •  22-08-2019
  •  | 
  •  

Domanda

Ho un VMware ESX Server. Ho Redhat macchine virtuali in esecuzione su quel server. Ho bisogno di un modo per programatically testare se sto in esecuzione in una macchina virtuale. Idealmente, mi piacerebbe sapere come fare questo da Perl.

È stato utile?

Soluzione

Vedere la risposta alla domanda " Rileva OS virtualizzato da un'applicazione? " .

Altri suggerimenti

Si dovrebbe non al 100% dipende da alcun metodo, in quanto sono caratteristiche non documentate / insetti - lavorano su alcuni sistemi operativi host e alcune soluzioni di virtualizzazione, ma non v'è alcuna garanzia che continuerà a lavorare; infatti, il punto di virtualizzazione deve essere indistinguibile da metallo reale possibile. Con questo in mente, il pillola blu pillola rossa (che è menzionato nella risposta accettata questa domanda simile ) sembra funzionare ... per ora.

VMWare ha un paio di SDK, tra cui un SDK per Perl .

Credo che (a seconda della versione di ESX) è possibile ispezionare presso l'indirizzo MAC della scheda di rete. VM in esecuzione in VMWare NIC avrà una stringa produttore assegnato a VMWare, non il fisico NIC MAC. (Stavamo cercando di falsificare il MAC VM un server di licenza e le versioni più recenti non lasceremo lo fai.) Inoltre, questo non garantisce non è in esecuzione su una scatola fisico con una scheda di rete spoofing a guardare come VMWare, ma sarebbe una cosa strana da fare nella maggior parte dei casi comunque.

Eseguire il seguente comando:

lspci | grep VMware

Si dovrebbe mostrare qualcosa del genere:

  

00: compatible controller 0f.0 VGA: VMware Adattatore SVGA II

     

00: 11.0 bridge PCI: bridge VMware PCI (rev 02)

     

00: 15.0 bridge PCI: VMware PCI Express Root Port (rev 01)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top