2012-10-13 16 views
7

मुझे नहीं लगता कि प्रश्न को किसी स्पष्टीकरण की आवश्यकता है। मैं एक सॉफ्टवेयर लिख रहा हूं जो नेटवर्क को अनुकरण करने के लिए आभासी मशीनों को बूट कर सकता है। यदि सॉफ्टवेयर पहले से ही वर्चुअल मशीन पर चल रहा है, तो मैं इस सुविधा को अक्षम करना चाहता हूं।यह पता लगाने के लिए कि वर्चुअल मशीन पर स्क्रिप्ट चल रही है या नहीं?

मैं पहले से ही इस पोस्ट को पढ़ता हूं: How to detect if my application is running in a virtual machine? लेकिन मुझे इसे लिनक्स पर करने की ज़रूरत है और वह पोस्ट केवल विंडोज़ को कवर करता है।

मैं इसे Perl प्रश्न के रूप में टैग कर रहा हूं क्योंकि मुझे इसे पर्ल में करना है, लेकिन शायद proc में कुछ फाइलें हैं या कहीं और जांच के लिए और यह सभी भाषाओं के लिए समान है। मैं वास्तव में नहीं जानता।

मुझे मुख्य रूप से वर्चुअलबॉक्स और केवीएम का पता लगाने में दिलचस्पी है, क्योंकि वे वीएम हैं जिनका मैं उपयोग कर रहा हूं।

तो, कोई सुझाव?

+0

* जो * वर्चुअल मशीन सॉफ़्टवेयर आप उपयोग कर रहे हैं? निर्देश अलग-अलग वीएम के लिए अलग-अलग हैं। – nneonneo

+0

@nneonneo, प्रश्न में जोड़ा गया। – Zagorax

+0

आप क्यों पूछते हैं? एक आदर्श वीएम का पता लगाने योग्य नहीं होना चाहिए, क्योंकि परिभाषा के अनुसार इसे वास्तविक मशीन की तरह व्यवहार करना चाहिए। –

उत्तर

11

मैं अतिथि ऑपरेटिंग सिस्टम के रूप में लिनक्स चलाने वाले वीएमवेयर और वर्चुअल बॉक्स वर्चुअल मशीनों के लिए विशिष्ट बात करूंगा। यदि आप कमांड चलाते हैं, तो आपको पता चल जाएगा कि अंतर्निहित हार्डवेयर वीएमवेयर/वर्चुअलबॉक्स है जो प्रमाणित करता है कि यह वर्चुअल मशीन है।

VMware अतिथि के लिए:

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

आभासी बॉक्स अतिथि के लिए:

# dmidecode | grep -i product 
    Product Name: VirtualBox 

"dmidecode" एक Linux सिस्टम आदेश है। आप अपनी स्क्रिप्ट की शुरुआत में dmidecode चला सकते हैं और मान निकाल सकते हैं। यदि यह वर्चुअल मशीन है तो स्क्रिप्ट को आगे के निष्पादन के बिना बाहर निकलना चाहिए।

मेरे पास आपके ऊपर दिए गए आदेश को पाने के लिए मेरे पास कोई अन्य हाइपरवाइजर नहीं है।

उम्मीद है कि इससे मदद मिलती है।

संबंधित मुद्दे

 संबंधित मुद्दे