Virtual Box, skrypt wyświetlający odpowiednie obrazy


(Tomekg87) #1

Witam,

Mam taki problem. Z jednego komputera korzysta kilka osób, każda pracuje na innym systemie. Bazowym systemem jest Ubuntu (pozostałe to m.in. XP, QNX Neutrino...). Każda osoba pracuje zazwyczaj o innej porze. Chciałbym napisać skrypt, który w zależności od daty i godziny udostępni w VirtualBoxie tylko wybrane maszyny. Np. dziewczyna pracuje na XP tylko jak jest u mnie w weekend, w tym czasie współokator czasami korzysta też z QNX. Po odpaleniu VirtualBoxa powinni zobaczyć tylko te dwa obrazy, przeznaczone dla nich, a nie powinni zobaczyć innych. W innym terminie, kiedy korzystają inne osoby, inny zestaw obrazów powinien być dostępny.

Jest w ogóle możliwe napisanie takiego skryptu? JEśli tak, to czy mógłby ktoś podsunąć jakieś sugestie? Może funkcje, które powinienem wykorzystać?

Z góry dziękuję za pomoc


(etam) #2

Generalnie się da. Wszystkie ustawienia v VirtualBoxie są zapisywane w XMLach, więc spokojnie można napisać skrypty odpalane z crona, które by je edytowały. Problem w tym, że w takiej sytuacji łatwo o błędy i zepsucie ustawień maszyn.


(Tomekg87) #3

Dzięki za dobrą informację:slight_smile:

A mógłbyś powiedzieć coś więcej na ten temat? Generalnie jestem amatorem (i studentem o zupełnie innym profilu), a takie rozwiązanie bardzo by mi się przydało. O XMLu wiem niewiele (jedynie co to jest, ale szerzej nie miałem z nim styczności), skrypty pisałem kiedyś baaaardzo podstawowe (np. takie, żeby nadać plikom jpg konkretną nazwę - przy kilku setkach zdjęć z różnych wydarzeń przydatne:) ).

A tak przy Virtual Boxie nawet nie wiem, o czego zacząć. Każda sugestia mile widziana:)


(etam) #4

Pierwsza sugestia jest taka, żebyś sam zobaczył na własne oczy jak wygląda taki plik konfiguracyjny. Pod ubuntu, to będzie

/home//.VirtualBox/VirtualBox.xml

W brew pozorom (i mimo formatu XML), jest bardzo czytelny.

Ciebie najbardziej interesuje sekcja . Jeżeli chcesz ukryć wirtualne twarde dyski, to też , ale tu trzeba ostrożnie (uwaga na snapshoty!).

Są dwie drogi: użyć biblioteki do obsługi XML, albo potraktować wyrażeniami regularnymi.

Poza tym jeszcze jest kwestia wyboru narzędzi do zrobienia skryptu. Możliwości jest kilka: Perl, Python, PHP (może coś jeszcze? więcej pomysłów nie mam). Samym bashem bym tego nie robił. Pisać programu w C/C++ też nie polecam.


(roobal) #5

A czemu nie? Bash ma wielkie możliwości :slight_smile: Owszem można by edytować plik sedem itp. ale myślę, że najprościej to będzie zrobić kopię oryginalnego pliku VirtualBox.xml i samych maszyn i na ich podstawie zrobić własne, czyli te ukrywające dyski i maszyny a skryptem basha wybierać odpowiednie konfiguracje, dla przykładu:

#!/bin/bash

mv -v $HOME/.VirtaulBox/VirtualBox.xml $HOME/.Virtualbox.xml.original

mv -v $HOME/.Virtualbox/VirtualBox.xml.XP $HOME/.VirtualBox/VirtualBox.xml

Coś w tym stylu.

Pozdrawiam!


(nintyfan) #6

Nie do końca rozumiem, o co Ci chodzi?

Nie lepiej utworzyć oddzielne konta użytkowników i skorzystać z simlinków?


(Tomekg87) #7

Dzięki za sugestie, wszystkie na pewno będą bardzo przydatne.

@Nintyfan:

chodzi mniej więcej o to: na moim kompie pracuje kilka osób (mniej i bardziej doświadczonych, między innymi moja młodsza siostra, która ma tendencje do rozwalania wszystkiego za co się złapie) na różnych systemach. Chciałbym zrobić kilka obrazów, każdy przeznaczony dla innej osoby i żeby w danym terminie po odpaleniu Virtual boxa były widoczne jedynie niektóre obrazy.

Np.kumpel ma jakieś laborki i zazwyczaj w poniedziałek wieczorem katuje QNX Neutrino. Więc przypuśćmy robię sobie obraz PONIEDZIAŁEK-QNX-15-19.vdi (czyli udostępniam mu kompa w godzinach 15-19 w poniedziałek). Po odpaleniu VB w tym terminie powinien się załadować automatycznie ten system, bez opcji wyboru innego.

Czyli np. przydatny byłby skrypt, który ładuje dany system z linii poleceń w zależności od daty/godziny.

Jeśli akurat nie ma żadnego przypisanego obrazu, to nic się nie uruchamia.

Może i bezsensowny problem, ale myślę, ze pomógłby mi trochę zapanować nad tym bałaganem.

Aha, najlepiej by mi było pisać w czystym bashu, bo już kiedyś robiłem proste rzeczy. Perla i PHP niestety nie znam.


(roobal) #8

W sumie to zamiast kombinować sposobem podanym przeze mnie wyżej, proponuję uruchamiać Virtualboksa z linii poleceń i skoro ma być dostępna tylko maszyna to proponuję umożliwić uruchamianie tylko jej, tak żeby nie można było uruchomić innego programu. Żeby zablokować możliwość zamknięcia VBoksa piszesz coś takiego:

#!/bin/bash

(Tomekg87) #9

Ślicznie dziękuje, to już praktycznie rozwiązało cały problem. Dodam jeszcze kilka rzeczy (możliwość wyboru w przypadku dwóch obrazów dostępnych w danym terminie, możliwość zamknięcia maszyny, gdyby jednak ktoś nie pracował w tym terminie, itd.) i będzie hulało:)