FHEM Forum

FHEM - Hardware => Server - Linux => Thema gestartet von: steffen83 am 19 April 2023, 08:41:39

Titel: Proxmox WOL für LXC und VM
Beitrag von: steffen83 am 19 April 2023, 08:41:39
Hallo zusammen,

ich möchte gerne ein Script mit euch teilen, worüber ihr ein LXC oder eine VM in Proxmox per WOL starten könnt.

Was muss gemacht werden? Das script muss auf der PVE liegen und bei jedem Start ausgeführt werden. Das geht wie folgt:
crontab -e in die Console eintragen und @reboot /root/wol.sh hinzufügen. Pfad zur Datei natürlich anpassen.
Das Script wird somit nach jedem Neustart gestartet.
Beim Absetzen eines WOL von irgendeiner Maschine (auch von einem LXC oder VM) wird die MAC Adresse überprüft ob diese einem LXC oder VM zugeordnet ist. Anschließend wird diese Maschine gestartet. Zusätzlich habe ich mir noch eine Meldung per Telegram eingebaut, welche mir über FHEM die Meldung ausgibt.

wol.sh
#!/bin/bash
re='^[0-9]+$'
while true ; do
    echo "\n" | nc -knl -p 9 -u | # listen to udp port 9 for packets, check if it is a magic packet
        stdbuf -o0 xxd -c 6 -p |
        stdbuf -o0 uniq |
        stdbuf -o0 grep -v 'ffffffffffff' |
        while read ; do
            macWOL="${REPLY:0:2}:${REPLY:2:2}:${REPLY:4:2}:${REPLY:6:2}:${REPLY:8:2}:${REPLY:10:2}"
            macWOL=`echo "$macWOL" |tr "[:upper:]" "[:lower:]"`     
            /usr/sbin/qm list  |tr -s ' ' | cut -d ' ' -f 2 | while read -r id ; do
                if [[ $id =~ $re ]] ; then
                    echo  "check QEMU VM-ID $id for $macWOL"
                    /usr/sbin/qm config $id | grep ^net0 | while read -r macstr ; do
                        macstr=`echo "$macstr" |tr "[:upper:]" "[:lower:]"`
                        if [[ $macstr == *"$macWOL"* ]]; then
                            echo "MAC $macWOL found at QEMU VMID  $id. Starting VM"
                            start=$(/usr/sbin/qm start $id 2>&1) ; echo "set TelegramBot _msg VM $id wird gestartet\n$start" | telnet 192.168.0.10 7072
                        fi
                    done
                fi
            done

            /usr/sbin/pct list  |tr -s ' ' | cut -d ' ' -f 1 | while read -r id ; do
                if [[ $id =~ $re ]] ; then
                    echo  "check LXC VM-ID $id for $macWOL"
                    /usr/sbin/pct config $id | grep ^net0 | while read -r macstr ; do
                        macstr=`echo "$macstr" |tr "[:upper:]" "[:lower:]"`
                        if [[ $macstr == *"$macWOL"* ]]; then
                            echo "MAC $macWOL found at LXC VMID  $id. Starting VM"
                            start=$(/usr/sbin/pct start $id 2>&1) ; echo "set TelegramBot _msg LXC $id wird gestartet\n$start" | telnet 192.168.0.10 7072
                        fi
                    done
                fi
            done
        done
    done
done

Viel Spaß damit.

Gruß
Steffen
Titel: Aw: Proxmox WOL für LXC und VM
Beitrag von: CoolTux am 19 April 2023, 09:53:07
So etwas am besten unter FHEM - Hardware -> Server - Linux veröffentlichen.
Du kannst den Thread gerne dahin verschieben.