Proxmox und VNC-Zugriff – Teil 5

Im letzten Beitrag zu dem Thema war ich eigentlich schon überzeugt, eine ganz gute Lösung gefunden zu haben.
Aber offensichtlich gab es doch noch Optimierungspotential. 😉

In der Datei /etc/xinetd.d/vncprox liegen die Einträge für openvz- und qemu-VMs jetzt in einem einheitlichen Format vor:

service vnc-10100
{
disable = no
socket_type = stream
protocol = tcp
port = 10100
type = UNLISTED
wait = no
user = root
server = /usr/bin/startvnc.sh
server_args = 100
}

service vnc-10104
{
disable = no
socket_type = stream
protocol = tcp
port = 10104
type = UNLISTED
wait = no
user = root
server = /usr/bin/startvnc.sh
server_args = 104
}

Die /usr/bin/startvnc.sh sieht so aus:
#!/bin/bash

#VMID = uebergebener Parameter
vmid=$1
vmtyp=""

#Pruefen, ob es sich um eine KVM handelt
out=`qm status $vmid 2>&1` #KVM-Status abfragen und Ergebnis auslesen
if [[ "$out" = "status: "* ]]; then #VM ist eine KVM
vmtyp="KVM"
if [ "$out" != "status: running" ]; then #KVM laeuft nicht
ret=`qm start $vmid 2>&1` #KVM starten
fi
fi

#Bei Bedarf noch auf VZ pruefen
if [ "$vmtyp" = "" ]; then #VZ-Status abfragen und Ergebnis auslesen
out=`vzctl status $vmid 2>&1`
if [[ "$out" = *"exist"* ]]; then #VM ist eine VZ
vmtyp="VZ"
if [[ "$out" != *"running"* ]]; then # VZ laeuft nicht
ret=`vzctl start $vmid 2>%1` #VZ starten
fi
fi
fi

if [ "$vmtyp" = "KVM" ]; then
qm vncproxy $vmid #VNC Proxy fuer KVM starten
elif [ "$vmtyp" = "VZ" ]; then
#vncterm fuer Container VMID auf Port 20VMID starten und nicht warten...
vncterm -rfbwait 5 -rfbport 20$vmid -rfbauth /root/.vnc/passwd -c vzctl enter $vmid &
sleep 1 #1 Sekunde warten. Ja, ja...
nc -w 4 localhost 20$vmid #Umleitung auf Port 20VMID erstellen
fi

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.