VM ohne UGOS einschalten

rednag

Well-known member
Hallo zusammen.
Ich nutze auf meiner DXP4800 Plus für unterschiedliche Zwecke unterschiedliche VMs. Manchen davon laufen durchgehend andere nur nach Bedarf. Für letztere suche ich nun eine Möglichkeit diese einzuschalten ohne den (Um)Weg über UGOS gehen zu müssen. Da es sich überwiegend um Windows-Systeme handelt im Idealfalle in Verbindung mit RDP. Das Initiieren von RDP startet ein Script, wartet x Sekunden (bis die VM gestartet ist) und verbindet dich anschließend über RDP. So meine etwas laienhafte Vorstellung. Hat da jemand Ideen oder Ratschläge ob und wie ich das umsetzen kann?
 
Mahlzeit!

Könntest Script basteln... via SSH oder ggf. API (sofern vorhanden) einen entsprechenden Befehl absetzen, dass die VM startet. Dann noch etwas in Richtung "sleep" um ein wenig zu warten (alternativ halt jede Sekunde den benötigten Port checken und erst bei Erreichbarkeit weitermachen) und dann die RDP-Verbindung starten.
 
Danke dir für die Antwort. Das klingt genau nach dem was ich will. Ich weiß aber nicht wie der Befehl unter UGOS bzw. SSH aussieht um die VM zu starten. Wenn ich dir VM manuell starte, taucht der entsprechende Befehl in irgendeinem Log auf von wo ich den abgreifen kann? Pioniere habens schwer....🙃
 
So, ich hab dann gestern mal ein bisschen mit @rednag zusammen gebastelt... Zielsetzung war ja, von einem Windows-Client eine Windows-VM auf dem UGOS-NAS zu starten und sich - sobald diese verfügbar ist, wird sich automatisch via RDP verbunden.

"virsh" ist definitiv richtig, entweder direkt als root, oder halt als Benutzer, dieser muss dann aber in der Gruppe libvirt sein. Vorbereitung wäre dann zum einen SSH einzuschalten, zum anderen den gewünschten Benutzer in die Gruppe libvirt zu verfrachten (usermod -aG libvirt <user>).

Wenn man mit dem gewünschten Benutzer Zugriff auf virsh hat, kann man in erster Instanz mal die vorhandenen VMs auslesen. Das funktioniert dann mittels virsh list --all. Die "Namen" sind allerdings für niemanden zu gebrauchen (braucht man aber für später), etwas "freundlicher" wird es, wenn man noch den Parameter "--title" anhängt, denn der Titel ist dann der eigentliche VM-Name lt. UGOS-Webinterface, also wäre es dann virsh list --all --title. Dort holt man sich (lt. Titel) dann den "Namen"(!) der gewünschten VM.

Danach eine Textdatei z.B. auf dem Desktop erstellen. Datei öffnen und Script-Inhalt einfügen und die oberen 6 Variablen nach eigenen Gegebenheiten/Vorstellungen anpassen:

Code:
$SSHHOST   = "192.168.x.x" # NAS-IP
$SSHUSER   = "MaxMustermann" # NAS-Benutzer
$VMNAME = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" # VM-"Name"
$RDPHOST  = "192.168.x.y" # IP der Windows-VM mit aktiviertem Remote-Desktop

$RETRY = "60" # Anzahl der Wiederholungen
$WAIT = "2" # Wartezeit in Sekunden zwischen Wiederholungen

# SSH-Verbindung initiieren und gewünschte VM starten
ssh $SSHUSER@$SSHHOST "virsh --connect qemu:///system start $VMNAME" | Out-Null

# Prüfen ob RDP-Port erreichbar ist, falls ja, Schleife verlassen
for ($i=0; $i -lt $RETRY; $i++) {
    if (Test-NetConnection $RDPHOST -Port 3389 -InformationLevel Quiet) {
        break
    }
    Start-Sleep -Seconds $WAIT
}

# Mittels RDP zur Windows-VM verbinden
mstsc /v:$RDPHOST

Datei speichern, Datei-Endung auf ".ps1" (PowerShell-Script) umschreiben, danach einen Rechtsklick auf die Datei machen und im Kontextmenü "mit Powershell ausführen" auswählen.

Zur allgemeinen Info: Das Script wurde auch nur grob zusammengestöpselt und grade noch (ohne es weiter zu testen) etwas "variablisiert", damit es übersichtlicher bei der Anpassung ist. Vielleicht funktioniert es jetzt auch schon nicht mehr (warum auch immer), ich hab halt kein UGREEN-NAS und @rednag ist nicht da, somit kann also nicht getestet werden. Sollte theoretisch funktionieren, aber man weiss ja, wie das manchmal so läuft... 😅

Zugriff mittels SSH-Key war an dieser Stelle nicht gewünscht (somit muss man beim Start des Scriptes sein Passwort für die SSH-Verbindung eingeben), aber jeder der sowas umsetzen kann, wird sich auch dieses lapidare Script selbst umbauen können (oder hat schon längst ein eigenes in der Tasche) ☺️
 
Zuletzt bearbeitet:
So, erstmal ein dickes Danke an @blurrrr für die gute Hilfestellung. Wie von ihm ausführlich erklärt funktioniert es so. Etwa 20sek. nach dem Starten des Scriptes (und somit Start der VM) wird die Verbindung via RDP initiiert. Ich hätte auch damit leben können, die VMs über die UGREEN-App vom Handy aus zu starten. Das gibt die App leider nicht her. Bei Docker hingegen kann man das so machen.
 
Ich hätte auch damit leben können, die VMs über die UGREEN-App vom Handy aus zu starten.
War bei mir mit QNAP ein ähnliches Szenario:
Ich wollte eine VM bei Bedarf vom Smartphone starten können... aber der Browser den ich verwende, wurde dafür nicht unterstützt... dann habe ich es ein paar mal über die GUI mit Chrome gemacht, aber das hat mich auch genervt. Ich habe mir dann ein Script in meiner SSH App gebaut, womit die Befehle dann automatisch nacheinander abgesetzt wurden.
 
habe mir dann ein Script in meiner SSH App gebaut
Aus einer App heraus ist ja auch mal spannend, insbesondere, dass da dann direkt noch Scripte unterstützt werden. Via SSH find ich persönlich halt irgendwie nicht so schön, via API wäre schon echt netter gewesen. Alternativ evtl. via Docker eine Website mit Links/Buttons zum starten der gewünschten VMs oder so, wäre aber auch wieder Bastelarbeit 😅

VM "bei Bedarf" starten hat es bei mir übrigens irgendwie noch nie gegeben. Ich wüsste auch garnicht warum. Entweder läuft's, oder halt nicht (dann wird es auch nicht gebraucht) 😁 Darf man fragen, was denn auf der VM lief, weshalb ein "bei Bedarf starten" notwendig war?
 
Ja mit den Webhooks wär das so. Er könnte sich im Browser einfach eine URL hinterlegen und das würde dazu führen, dass ein Script ausgeführt wird das die VM startet.
 
Wohl eher als Desktop-Icon, aber sowas lässt sich ja mit einer einfachen Verknüpfung auch realisieren. Aber... ach halt stop: Es soll ja nur "ein" Klick sein, womit "alles" erledigt wird. Dann ist doch wieder ein lokales Script, also kann man da auch einfach den Webhook ins lokale Script packen. Also Script lokal, Script remote + laufender Container. Also dann... @rednag sieh mal zu :D
 
Zuletzt bearbeitet:
Darf man fragen, was denn auf der VM lief, weshalb ein "bei Bedarf starten" notwendig war?
Es war eine vom LAN isolierte WinXP VM... dort hatte ich gelegentlich Dinge aus dem Web ausprobiert, die ich auf einem produktiven Rechner nicht ausprobiert hätte... wenn ich das so stehenlassen darf 😇

Damals gab es noch JuiceSSH (?) als App, da konnte man derartige Scripte anlegen, war aber halt auch SSH. Mittlerweile verwende ich Terminus, keine Ahnung ob das da auch geht, ich brauche es nicht mehr....
 

Letzte Anleitungen

Statistik des Forums

Themen
7.608
Beiträge
74.334
Mitglieder
8.197
Neuestes Mitglied
stephan6906
Zurück
Oben