Как да открия програмно дали моето приложение на python е стартирано вътре във Virtualbox

Пиша приложение на Python, което трябва да работи по различен начин, в зависимост от системния контекст на хост/гост.

Това, от което се нуждая, е функция, която казва къде съм:

if IamRunningOnHost():
    #start server if not running, connect to server
else: #running on guest
    #use different ip, terminate if server not running

Сега най-лесният начин би бил да открия някои известни разлики във файловата система между хост и гост системата или да имам конфигурация, която редактирам ръчно всеки път, когато превключвам системния контекст.

Има ли по-изчистен и по-универсален начин за разграничаване, когато изпълнявам вътре във VirtualBox?

Редактиране1: Моят гост и хост са операционни системи linux.

Edit2: Пропуснах да спомена, трябва да се постигне чрез извикване на python и без необходимост от root права. Също така не искам да инсталирам допълнителен софтуер в госта. Просто искам да копирам и стартирам приложението без изискване за допълнителни системни промени. Предложеният дубликат „Откриване на виртуализирана ОС от приложение?“ следователно не е полезно за мен.


person evolution    schedule 03.04.2015    source източник
comment
Каква е операционната система на хоста и госта? Имам шаблон за скрипт на powershell, който наскоро събрах, за да взема системна информация (която би направила разлика между виртуален и хост), така че ако единият или и двата са Win 7/8, мога да ви го дам. Знам със сигурност, че Windows VM съдържат системна информация, която лесно се разпознава като виртуална. Мога само да предположа, че Linux VM ще споделят подобни качества. Моето предложение е да намерите някаква информация за статична виртуална машина чрез някакъв вид CLI спецификация и да я сравните (If/Else) със съответните данни на хостовете.   -  person    schedule 03.04.2015
comment
И двете системи са ubuntu 14, така че вашият скрипт вероятно няма да помогне. Но ще добавя това към въпроса си.   -  person evolution    schedule 03.04.2015
comment
Процесът обаче би бил подобен. Изпълнете команда, която изброява спецификациите на текущата работеща машина. т.е.: (lshw, lscpu, lspci) Филтрирайте някаква конкретна статична информация, която ясно показва използването на VM или хост. Съхранявайте тази информация в променлива. Свържете променливата с нещо друго по ваш избор, като използвате if/else. Едно просто предложение би било... if Variable = "VirtualBox" стартиране на сървър else use different IP Грабнах екранна снимка за вас на lshw в Ubuntu във виртуална машина. s29.postimg.org/aiphz4jmf/Capture.png   -  person    schedule 03.04.2015
comment
Благодаря :) lshw | grep VirtualBox ; lspci | grep VirtualBox е достатъчно добър и мога да го комбинирам с subprocess.Popen След това мога да получа отговора чрез .communicate()както е предложено тук: stackoverflow.com/questions/3503879/   -  person evolution    schedule 03.04.2015