# Proxmox Wartungsmodus / Maintenance Mode - Diasable / Enable VMS at Start

Beschreibung

Man möchte den Server mehrmals neustarten, dann nervt es doch, wenn alle VMs/CTs mit starten.  
Mit folgendem Script kann man das ein und auschalten

Installation des scripte

Auf den Server einloggen (sollte es ein Cluster sein, braucht das nur auf eine Node gepackt werden)  
Nun eine Neue Datei erstellen

```
nano /root/save_boot_state.sh
```

Den Inhalt einfügen

```
#!/bin/bash
# boot-save-disable.sh
# Speichert alle onboot=1 VMs/CTs und deaktiviert sie

SAVEFILE="/root/boot-state.txt"
> "$SAVEFILE"

echo "=== Speichere Boot-Status ==="

for conf in /etc/pve/qemu-server/*.conf /etc/pve/lxc/*.conf; do
    [ -f "$conf" ] || continue
    if grep -q "^onboot: 1" "$conf"; then
        id=$(basename "$conf" .conf)
        type="vm"
        [[ "$conf" == *"/lxc/"* ]] && type="ct"
        echo "$type $id" >> "$SAVEFILE"
        sed -i 's/^onboot: 1/onboot: 0/' "$conf"
        echo "  Deaktiviert: $type $id"
    fi
done

echo ""
echo "Gespeichert in: $SAVEFILE"
echo "$(wc -l < "$SAVEFILE") Einträge"
```

Ausführbar machen

```
chmod +x /root/save_boot_state.sh
```

Wiederherstellung Script

```
nano /root/restore-boot-state.sh
```

Inhalt

```
#!/bin/bash
# boot-restore.sh
# Stellt onboot=1 für alle gespeicherten VMs/CTs wieder her

SAVEFILE="/root/boot-state.txt"

if [ ! -f "$SAVEFILE" ]; then
    echo "Fehler: $SAVEFILE nicht gefunden!"
    exit 1
fi

echo "=== Stelle Boot-Status wieder her ==="

while read -r type id; do
    if [ "$type" = "vm" ]; then
        conf="/etc/pve/qemu-server/${id}.conf"
    else
        conf="/etc/pve/lxc/${id}.conf"
    fi

    if [ -f "$conf" ]; then
        if grep -q "^onboot:" "$conf"; then
            sed -i 's/^onboot: 0/onboot: 1/' "$conf"
        else
            echo "onboot: 1" >> "$conf"
        fi
        echo "  Aktiviert: $type $id"
    else
        echo "  FEHLER: $conf nicht gefunden"
    fi
done < "$SAVEFILE"

echo ""
echo "Fertig."
```

Ausführbar machen

```
chmod +x /root/restore_boot_state.sh
```

Status script

```
nano /root/status_boot_state.sh
```

Inhalt

```
#!/bin/bash
# boot-status.sh
# Zeigt aktuellen onboot-Status aller VMs/CTs

SAVEFILE="/root/boot-state.txt"

echo "=== Aktueller onboot-Status ==="
echo ""
printf "%-6s %-6s %-8s %s\n" "Typ" "ID" "onboot" "Name"
echo "-------------------------------------"

for conf in /etc/pve/qemu-server/*.conf /etc/pve/lxc/*.conf; do
    [ -f "$conf" ] || continue
    id=$(basename "$conf" .conf)
    type="vm"; [[ "$conf" == *"/lxc/"* ]] && type="ct"
    name=$(grep "^name:" "$conf" | awk '{print $2}')
    [ -z "$name" ] && name=$(grep "^hostname:" "$conf" | awk '{print $2}')
    onboot=$(grep "^onboot:" "$conf" | awk '{print $2}')
    [ -z "$onboot" ] && onboot="0"
    printf "%-6s %-6s %-8s %s\n" "$type" "$id" "$onboot" "${name:-}"
done

echo ""
if [ -f "$SAVEFILE" ]; then
    echo "Gespeicherte Einträge in $SAVEFILE: $(wc -l < "$SAVEFILE")"
else
    echo "Kein Savefile vorhanden ($SAVEFILE)"
fi
```

Ausführbar machen

```
chmod +x /root/status_boot_state.sh
```