Programm zur Steuerung von Virtualbox

  • Hey, Leute:
    Folgendes Windows-Problem:

    ich hab in Virtualbox eine virtuelle Maschine am laufen, die mir n bissl Webserver usw. macht zum testen, spielen und co.
    Der Zugriff darauf reicht mir eigentlich via ssh.
    Ich bin auf dem Stand, die Maschine via cmd im Hintergrund zu starten:

    Code
    "C:\Programme\sun\xVM  VirtualBox\VBoxHeadless.exe" --vrdp  off -startvm "Dumdidum"

    Wenn ich dann die cmd schließe oder Strg+C drücke, bricht der die Maschine ab. Das reguläre Herunterfahren kann/muss nat. auch via nem cmd-Command erfolgen.

    Was ich möchte ist ein Tray-Icon, was mir den Status der Maschine anzeigt, wo ich die mit rechtsklick starten/stoppen/ne ssh öffnen kann und das mir beim Herunterfahren von Windows erstmal die virtuelle Maschine herunterfährt.

    Ich habe aber noch keinen Ansatz, wie ich das coden kann, bzw. mit welcher Sprache überhaupt. Ich kann nur Java, aber das scheint mir ungeeignet!

    Wär cool, wenn mir jmd. helfen kann! Denke auch, dass das für andere durchaus nützlich wäre, wenns denn mal funktioniert!

    Einmal editiert, zuletzt von klemmi (22. Dezember 2010 um 22:30)

  • Minecraft ist der beste beweiß was mit java möglich ist <:

    Naja ansatz.. du könntest mit ner prüfung anfangen ob der prozess gestartet ist? also simple prozess abfrage, starten machste halt über über sowas wie "open.program" (kann kein java, daher kp) und close würd ich mir als schwieriger vorstellen, evtl per ssh ein halt befehl in deine vm senden? gibt bestimmt irgendein programm der sich automatisch einloggt und ein halt los sendet.. und das könntest du auch wieder mit "open.program" machen..

    hab was gefunden:

    Code
    try { 
        Runtime.getRuntime().exec("c:\\windows\\notepad.exe"); 
    } 
    catch (Exception rune) {System.out.println(rune);}
  • Zitat von Blue

    Minecraft ist der beste beweiß was mit java möglich ist <:

    Naja ansatz.. du könntest mit ner prüfung anfangen ob der prozess gestartet ist? also simple prozess abfrage, starten machste halt über über sowas wie "open.program" (kann kein java, daher kp) und close würd ich mir als schwieriger vorstellen, evtl per ssh ein halt befehl in deine vm senden? gibt bestimmt irgendein programm der sich automatisch einloggt und ein halt los sendet.. und das könntest du auch wieder mit "open.program" machen..


    Das in Java zu machen ist natürlich möglich. Ich glaube, ich werde es auch versuchen. Aber ich weiß nicht, ob das mit Kanonen auf Spatzen ist...

  • minecraft ist der beste beweis, wie man moderne rechner mit absolut lächerlicher grafik in die knie zwingen kann

    in dem sinne kann ich durchaus verstehen, warum man bei soner kleinen simplen aufgabe nicht immer die fette jvm gestartet haben möchte

  • Wenn du Java machst, brauchst du meines Wissens eh ne Drittbibliothek wie SWT, weil die Original-Bibliotheken AWT und Swing kein Trayicon können.

    An nativen Scriptsprachen mangelt es bei Windows halt. Python oder so brauchen auch ne Fremdruntime und haben am Ende nur wenig Vorteil gegenüber Java, wenn dir Java übertrieben erscheint.

    Auch VBScript und cmd-Batch können von Haus aus keine Trayicons.

    Von daher bleibt dir meines Errachtens wohl gar nichts anderes übrig, als zu einer kompilierten Sprache deiner Wahl zu greifen, ich vermute eine .NET-basierte Sprache wird am einfachsten sein, weil die die abstrahierten APIs haben. So ein Tray-Icon in C/C++ wird vermutlich mühsamer. Und VBScript (ohne .NET) und Delphi riechen schon bisschen muffig.

    Nachtrag: Minecraft verwendet OpenGL. Und da bietet Windows seit Vista halt kein eigenes API mehr an, das muss der Treiber ordentlich machen, drum funzt das bei manchen vermutlich dermassen schlecht.

  • Ohne mich jetzt da genau auszukennen, würde ich mal auf OpenGL tippen! Richtiges Hardwarerendering ist schon allein über die Plattformunabhängigkeit enorm schwer zu realisieren.
    EDIT: okay, Gandro hats im Post vorher zeitgleich schon gebracht.

    Übrigens noch ein Argument gegen Java, weil ich Plattformunabhängigkeit nicht brauche...

    Lese ich da gerade C# raus? (Kenn mich bei den Windows-Sachen gar nicht aus)

    Einmal editiert, zuletzt von klemmi (22. Dezember 2010 um 23:33)

  • Zitat von klemmi

    Lese ich da gerade C# raus? (Kenn mich bei den Windows-Sachen gar nicht aus)


    Wenn du Java kannst, ist C# nicht weit weg, und bietet dir recht ordentliche APIs zu den Windows-Funktionen.

    Es wird damit nur kaum schneller oder ressourcensparender als mit Java laufen, aber Zugriff auf die Windows-API hast du sicherlich besseren. Und auch genügend Material zum googeln.

    Wobei das im Grunde für alle .NET-Sprachen gilt, aber C# ist halt am nächsten an Java dran, ohne selber ein Java-Clone zu sein (wie J#).

  • hmm also rein performance-technisch würd ich schon denken, dass .Net auf Windows da besser läuft als Java
    wie das nun genau funktioniert, kann ich dir aber nicht sagen. [halbwissen]man kann ja irgendwie sowohl C++ mit .Net verwenden, als auch die .Net-Sachen als nativ compilieren soweit ich das weiß.[/halbwissen]

    btw: J# ist meineswissens tot, das wird netmehr weitergeführt werden

    Einmal editiert, zuletzt von oreissig (22. Dezember 2010 um 23:57)

  • naja, ich habe jetzt gerade den Entschluss gefasst, mir das ganze mal per C# zu gemüte zu führen, auf der Hoffnung, dass ich da mit meinen Java-Kenntnissen ohne größeren Aufwand rein komm.

  • Kann das libvirt oder wie das heißt nicht auch? Könnt ma vllt auch kompilieren, MinGW32 oder so.

    PGP-Key E384 009D 3B54 DCD3 21BF  9532 95EE 94A4 3258 3DB1 | S/MIME-Key 0x1A33706DAD44DA
    G d-@ s+:- a--- C+++ UB+L++ P--- L++@ E-@>++ W+ N o? K? w>++ !O !M !V PS+++ PE-- Y+>++ PGP++>+++ !t 5? X? !R tv b+++>++++ DI !D G>+ e>+++ h !r>++ !z
    „Die Aachener gelten als Erfinder des 4. Hauptsatzes der Thermodynamik: ‚Thermo schreibt man zweimal.“‘
    “Saying that Java is good because it works on all platforms is like saying oral sex is good because it works on all sexes.”
    „Es gibt 10 Sorten von Leuten: Die einen verstehen das Binärsystem, die anderen nicht.“
    „Manche Männer lieben Männer, Manche Frauen eben Frauen; Da gibt's nix zu bedauern und nichts zu staunen; Das ist genau so normal wie Kaugummi kauen; Doch die meisten werden sich das niemals trauen“

  • Siehe meinen Code-Schnippsel hierzu – das einfachste ist wohl, in deiner virtuellen Maschine einen acpid zu installieren (falls das nicht wie z. B. im Falle einer Debian-Standardinstallation ohnehin der Fall ist), der auf das ACPI-Signal des virtuellen Ausschaltknopfes reagiert und die VM herunterfährt. Wenn der Prozess nach dem Schließen der Konsole weiterlaufen soll, musst du natürlich das Programm mit start starten. ;)
    Für ein Tray-Programm bräuchte man sicher erst einmal weitere Informationen über die öffentliche API von VirtualBox, aber wie man eventuell leicht rausfindet, kann man schon mit VBoxManage sehr viele Informationen über eine VM herausfinden.
    Windows kann man zudem so konfigurieren, dass es Skripte beim Herunterfahren ausführen soll (und auch warten, bis die VM heruntergefahren ist).

  • Zitat von gandro

    Wenn du Java machst, brauchst du meines Wissens eh ne Drittbibliothek wie SWT, weil die Original-Bibliotheken AWT und Swing kein Trayicon können.

    Java6 (1.6) kann Tray-Icons zeigen und verwalten (siehe TV-Browser, Jdownloader ...).

    Btw, in den Quellen des Switch-Plugins (auch TV-Browser) ist zu sehen, wie man ein externes Programm startet.

    (sorry, falls ich was wiederhole, hab mir noch nicht alle Posts durchgelesen)

    Einmal editiert, zuletzt von atarixle (23. Dezember 2010 um 11:37)

  • Zitat von atarixle

    Java6 (1.6) kann Tray-Icons zeigen und verwalten (siehe TV-Browser, Jdownloader ...).


    Tatsache.

    Hab seit Java 4 keine GUI-Programmierung in AWT/Swing gemacht, weil damals ging das noch nicht, deswegen bin ich dann auf SWT umgestiegen.

  • Grad ist VirtualBox 4.0.0 rausgekommen ... eine der Neuerungen ist die Neue GUI ... vielleicht bringt die schon einige der gewünschten Funktionalität mit. Ich lade grad für Mac herunter.

    Oh, SWT scheint ja richtig schick zu sein, ich mag es, wenn die nativen GUI-Elemente verwendet werden.

    Einmal editiert, zuletzt von atarixle (23. Dezember 2010 um 12:16)

  • Zitat von DosAmp

    Siehe meinen Code-Schnippsel hierzu [...]
    Windows kann man zudem so konfigurieren, dass es Skripte beim Herunterfahren ausführen soll (und auch warten, bis die VM heruntergefahren ist).

    Jaja, klar war mir alles vorher schon bewusst! Im ersten Post habe ich ja auch so einen cmd-Schnipsel gepostet! Ein Skript beim Herunterfahren hätte den Nachteil, dass es für jede VM, die ich so steuern möchte, einen Statuscheck macht und dann ggf. die VM herunterfährt. Alternative zum Stauscheck wären krumme Config-Dateien, die beim Starten der VM angelegt werden und beim Herunterfahren der VM gelöscht werden. Das ist aber nicht wirklich schön, Fehleranfällig und umständlich einzurichten-

    Ich will auch keine Sammlung von Bausteinen. Wenn ich das nicht zusammenfasse, habe ich:

    • ein Skript zum hochfahren
    • ein Skript zum Status checken
    • ein Skript zum runterfahren
    • einen Windows-Job zum herunterfahren, der jedes Mal den Status erst abfragen muss.
    • Putty und die Hoffnung, die IP im Kopf zu haben

    Und das einmal für jede VM, die ich so steuern möchte.

    Und das ist doch ziemlich unkomfortabel!

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!