2012-10-13 18 views
7

Nie sądzę, że pytanie wymaga wyjaśnienia. Piszę oprogramowanie, które może uruchomić maszyny wirtualne w celu symulacji sieci. Chciałbym wyłączyć tę funkcję, jeśli oprogramowanie jest już uruchomione na maszynie wirtualnej.Jak wykryć, czy skrypt działa na maszynie wirtualnej?

Przeczytałem już ten wpis: How to detect if my application is running in a virtual machine? Ale muszę to zrobić w systemie Linux, a ten post obejmuje tylko system Windows.

Oznaczyłem to jako pytanie o numer Perl, ponieważ muszę to zrobić w Perlu, ale prawdopodobnie jest jakiś plik w proc lub gdzieś indziej, aby sprawdzić i jest taki sam dla wszystkich języków. Właściwie to nie wiem.

Jestem zainteresowany wykrywaniem głównie VirtualBox i KVM, ponieważ są to VM, których używam.

Tak, każda sugestia?

+0

* z jakiego * oprogramowania maszyny wirtualnej korzystasz? Instrukcje prawdopodobnie różnią się dla różnych maszyn wirtualnych. – nneonneo

+0

@nneonneo, Dodano do pytania. – Zagorax

+0

Dlaczego pytasz? Idealna maszyna wirtualna nie powinna być wykrywalna, ponieważ z definicji powinna zachowywać się jak prawdziwa maszyna. –

Odpowiedz

11

Będę mówić konkretnie o VMware i Virtual Box Virtual Machines z systemem Linux jako systemem operacyjnym gościa. Jeśli uruchomisz poniższą komendę, dowiesz się, że podstawowym sprzętem jest VMware/VirtualBox, który poświadcza, że ​​jest to maszyna wirtualna.

dla VMware gościa:

# dmidecode | grep -i product 
     Product Name: VMware Virtual Platform 

Virtual Box gościa:

# dmidecode | grep -i product 
    Product Name: VirtualBox 

"dmidecode" jest poleceniem systemu Linux. Perl możesz uruchomić na początku skryptu na dmidecode i wyodrębnić wartość. Jeśli jest to maszyna wirtualna, skrypt powinien zakończyć się bez dalszej realizacji.

Nie mam żadnego innego hiperwizora, który byłby w mojej dyspozycji, aby uzyskać od ciebie to, co zwraca powyższe polecenie.

Mam nadzieję, że to pomoże.

Powiązane problemy