Vmware mit php starten
Ich möchte eine VMware über den Browser starten ...
Hallo,
Ich habe folgendes vor: Ich möchte eine VMWare sobald sie benötigt wird aus dem Web starten. dazu ist auf dem Server wo VMware läuft ein Apache Web Server installiert.
Mit folgendem Befehl möchte ich den Server starten:
passthru('vmrun.exe -T ws start "G:\***\Ubuntu.vmx"',$out);
Wobei zu sagen ist das vmrun.exe auf C: ist und Ubuntu auf G:
Doch es passiert nichts außer das sich der Browser dumm und dämlich lädt und irgendwann die Fehler Meldung "200 OK" kommt.
- Ich habe es schon über eine Batchdatei probiert
- habe in der apache config das VMdir als vhost eingetragen und versucht darin zu arbeiten.
Macht alles keinen Unterschied. Woran kann es liegen?
wenn ich passthru('vmrun.exe",$out) eingebe bekomme ich im browser die Help angezeigt wie es auch sein sollte!
Freue mich über jede Hilfe!
lg Marcel
Hallo,
Ich habe folgendes vor: Ich möchte eine VMWare sobald sie benötigt wird aus dem Web starten. dazu ist auf dem Server wo VMware läuft ein Apache Web Server installiert.
Mit folgendem Befehl möchte ich den Server starten:
passthru('vmrun.exe -T ws start "G:\***\Ubuntu.vmx"',$out);
Wobei zu sagen ist das vmrun.exe auf C: ist und Ubuntu auf G:
Doch es passiert nichts außer das sich der Browser dumm und dämlich lädt und irgendwann die Fehler Meldung "200 OK" kommt.
- Ich habe es schon über eine Batchdatei probiert
- habe in der apache config das VMdir als vhost eingetragen und versucht darin zu arbeiten.
Macht alles keinen Unterschied. Woran kann es liegen?
wenn ich passthru('vmrun.exe",$out) eingebe bekomme ich im browser die Help angezeigt wie es auch sein sollte!
Freue mich über jede Hilfe!
lg Marcel
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 140248
Url: https://administrator.de/contentid/140248
Ausgedruckt am: 24.11.2024 um 09:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo,
doch, er läuft auch auf einem "normalen" Betriebssystem, was immer (Windows, Linux) du darunter verstehst. Das schöne ist, dass VMs dort "im Hintergrund" als Dienst laufen können, also ohne Zwang einer grafischen Darstellung. Somit ist auch Perfomancetechnisch ein kleines Plus drin, weil die "Anzeige" nicht noch vom Hostbetriebssystem angezeigt werden muss.
Bevor du mit PHP rumwirscht (das bekäme dein Kunde ja mit), wirkt es imho besser, sich auf einem VMWare-Server einzuloggen und dort eine VM zu starten. Du könntest z.B. deinem Benutzer einen eigenen Account geben, wo er dann nur seine VM sehen könnte und diese starten und stoppen kann, macht vielleicht mehr Eindruck, als ein PHP Skript.
Probiers einfach mal aus.
Bzgl. PHP, läuft
vmrun.exe -T ws start "G:\***\Ubuntu.vmx
in deiner Kommandozeile?
Kehrt der Aufruf sofort zurück? (darauf wartet nämlich passthru, und zwar eigentlich so lange, bis vmrun.exe beendet wurde. Je nachdem, wie lange das dauert?!)
200 OK
ist übrigens keine Fehlermeldung...
Lg
Matze
doch, er läuft auch auf einem "normalen" Betriebssystem, was immer (Windows, Linux) du darunter verstehst. Das schöne ist, dass VMs dort "im Hintergrund" als Dienst laufen können, also ohne Zwang einer grafischen Darstellung. Somit ist auch Perfomancetechnisch ein kleines Plus drin, weil die "Anzeige" nicht noch vom Hostbetriebssystem angezeigt werden muss.
Bevor du mit PHP rumwirscht (das bekäme dein Kunde ja mit), wirkt es imho besser, sich auf einem VMWare-Server einzuloggen und dort eine VM zu starten. Du könntest z.B. deinem Benutzer einen eigenen Account geben, wo er dann nur seine VM sehen könnte und diese starten und stoppen kann, macht vielleicht mehr Eindruck, als ein PHP Skript.
Probiers einfach mal aus.
Bzgl. PHP, läuft
vmrun.exe -T ws start "G:\***\Ubuntu.vmx
in deiner Kommandozeile?
Kehrt der Aufruf sofort zurück? (darauf wartet nämlich passthru, und zwar eigentlich so lange, bis vmrun.exe beendet wurde. Je nachdem, wie lange das dauert?!)
200 OK
ist übrigens keine Fehlermeldung...
Lg
Matze
Hallo,
ne, den Editor startet er bei mir auch nicht, wenngleich er kurz cmd startet. Mit
<edit>
passthru("cmd /C notepad",$out);
startet ihn wohl.
/C sagt, alles was jetzt kommt ist ein Command.
</edit>
bekomme ich unter Windows die Ausgabe
Was auch läuft (laufen sollte):
Die Prozesse startet er ja jeweils als Apache Kindprozesse. (Bzw. IIS Kindprozesse des php-cgi). Bei einer Zeitüberschreitung killt der Apache/IIS dann den PHP-Prozess, und damit auch die Kindprozesse.
Wenn du z.B. ProcessExplorer von
http://technet.microsoft.com/de-de/sysinternals/bb896653.aspx
nutzt, dann erkennst du folgendes:
Somit wird eben auch dein VMWare Programm gekillt, wenn die Laufzeit vorbei ist. Leider habe ich keine Möglichkeit gefunden, den Kindprozess einfach zu trennen. Du bräuchtest etwas wie einen kickoff-Prozess, welcher dann den gestarteten Prozess einfach dem Explorer "anhängt" und sich dann sofort beendet. Allerdings lässt sich dann eben in PHP nicht mehr der Rückgabewert auswerten, welchen du ja mit passthru bekommst. Also kannst du auch nicht sicher gehen, dass der VMWare Prozess wirklich läuft.
Lg
Matze
ne, den Editor startet er bei mir auch nicht, wenngleich er kurz cmd startet. Mit
<edit>
passthru("cmd /C notepad",$out);
startet ihn wohl.
/C sagt, alles was jetzt kommt ist ein Command.
</edit>
<?php
passthru("cmd",$out);
?>
bekomme ich unter Windows die Ausgabe
Microsoft Windows [Version 6.1.7600] Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten. C:\xampp\htdocs>
Was auch läuft (laufen sollte):
passthru("dir C:\\",$out);
Die Prozesse startet er ja jeweils als Apache Kindprozesse. (Bzw. IIS Kindprozesse des php-cgi). Bei einer Zeitüberschreitung killt der Apache/IIS dann den PHP-Prozess, und damit auch die Kindprozesse.
Wenn du z.B. ProcessExplorer von
http://technet.microsoft.com/de-de/sysinternals/bb896653.aspx
nutzt, dann erkennst du folgendes:
- Starte "cmd" und suche den Prozess in der Liste.
- Nun öffnest du mit "notepad" einen Editor, dieser taucht als "Kind" von "cmd" in der Liste auf.
- Ein Rechtsklick auf "cmd" und "KillProcessTree" ist vergleichbar mit dem Ende der Laufzeit deines Scriptes.
- Wie du erkennst, wird auch der Notepad-Prozess beendet.
Somit wird eben auch dein VMWare Programm gekillt, wenn die Laufzeit vorbei ist. Leider habe ich keine Möglichkeit gefunden, den Kindprozess einfach zu trennen. Du bräuchtest etwas wie einen kickoff-Prozess, welcher dann den gestarteten Prozess einfach dem Explorer "anhängt" und sich dann sofort beendet. Allerdings lässt sich dann eben in PHP nicht mehr der Rückgabewert auswerten, welchen du ja mit passthru bekommst. Also kannst du auch nicht sicher gehen, dass der VMWare Prozess wirklich läuft.
Lg
Matze