Shutdown des PBS nachdem alle VMs gesichert wurden?

fpausp

Renowned Member
Aug 31, 2010
609
39
93
Austria near Vienna
Würde gerne meinen Proxmox Backup Server nach dem Sichern der VMs automatisch runterfahren.
Zeitgesteuert wieder einschalten des Servers über BIOS oder WOL ...

Denke über die GUI geht es nicht, wie macht man das am besten?
 
  • Like
Reactions: twl
Hi fpausp,

ich habe dazu ein Bash-Skript geschrieben, was alle 10 Sekunden prüft ob keine Tasks mehr im PBS laufen.

Mit folgendem Befehl kannst du die Anzahl an laufenden Tasks abrufen:

Code:
proxmox-backup-manager task list | grep running | wc -l

Kleines Beispiel des Skriptes:

Code:
#!/bin/bash

count=$(proxmox-backup-manager task list | grep running | wc -l);

if [ $count -gt 0 ]; then
    echo "tasks running"
else
    echo "shutdown possible"
    poweroff
fi

Dieses könntest du dann per cron-job alle x Minuten ausführen.
Ebenso kannst du den PBS per WOL und cron-job von PVE aus starten.
Hilft dir das weiter?
 
Hi fpausp,

ich habe dazu ein Bash-Skript geschrieben, was alle 10 Sekunden prüft ob keine Tasks mehr im PBS laufen.

Mit folgendem Befehl kannst du die Anzahl an laufenden Tasks abrufen:

Code:
proxmox-backup-manager task list | grep running | wc -l

Kleines Beispiel des Skriptes:

Code:
#!/bin/bash

count=$(proxmox-backup-manager task list | grep running | wc -l);

if [ $count -gt 0 ]; then
    echo "tasks running"
else
    echo "shutdown possible"
    poweroff
fi

Dieses könntest du dann per cron-job alle x Minuten ausführen.
Ebenso kannst du den PBS per WOL und cron-job von PVE aus starten.
Hilft dir das weiter?
Danke, werd ich testen! ...
 
geht auch einfacher per hook sript einfach ans Ende reinschreiben das er den Server runter fahren soll

Code:
#!/bin/bash

if [ "$1" == "backup-start" ]; then
fi

if [ "$1" == "backup-end" ]; then
fi

if [ "$1" == "job-end" ]; then
shutdown pbsserver
fi

exit 0
 
Bei mir sieht das so aus in der /etc/pve/jobs.cfg

Code:
vzdump: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:1
        schedule mon..sat 04:00
        enabled 1
        mailnotification failure
        mailto meine@email.weg
        mode stop
        quiet 1
        script /usr/local/bin/vzdump-hook-script
        storage pbs
        vmid 100

Der Inhalt vom hook script "vzdump-hook-script" ist dann das Script von oben von mir
wenn der PBS nen extra Server ist dann muss das so aussehen z.B.

Code:
#!/bin/bash

if [ "$1" == "backup-start" ]; then
etherwake xx:xx:xx:xx:xx   #(mac Adresse vom pbs Server)
ping pbsserver -c 60
fi

if [ "$1" == "backup-end" ]; then
fi

if [ "$1" == "job-end" ]; then
ssh root@pbsserver "poweroff < /dev/null &"
fi

exit 0
 
Last edited:
Bei mir sieht das so aus in der /etc/pve/jobs.cfg

Code:
vzdump: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:1
        schedule mon..sat 04:00
        enabled 1
        mailnotification failure
        mailto meine@email.weg
        mode stop
        quiet 1
        script /usr/local/bin/vzdump-hook-script
        storage pbs
        vmid 100

Der Inhalt vom hook script "vzdump-hook-script" ist dann das Script von oben von mir
wenn der PBS nen extra Server ist dann muss das so aussehen z.B.

Code:
#!/bin/bash

if [ "$1" == "backup-start" ]; then
etherwake xx:xx:xx:xx:xx   #(mac Adresse vom pbs Server)
ping pbsserver -c 60
fi

if [ "$1" == "backup-end" ]; then
fi

if [ "$1" == "job-end" ]; then
ssh root@pbsserver "poweroff < /dev/null &"
fi

exit 0
OK, cool. Werd ich am WoE testen... Danke!
 
Das ist grossartig. Ich will ach genau so was machen.

Ich habe einen alten Desktop PC als PBS eingerichtet. Im momment schaltet er um 22:00 mit BIOS ein und um 04:00 mit einem cron job wieder aus.
Der PVE macht in diesem Zeitfenster seine Backups.

Leider habe ich noch keine ahnung vom Skript schreiben und im Momment auch keine Zeit es zu lernen.

@mKenfenheuer das Skript, dass du oben gepostet hast, funktioniert das wenn ich es kopiere und einfüge oder müsste ich etwas anpassen?

@bluesite wie und vorallem wo müsste bei mir so ein hook skript sein?
 
@twl im Grunde steht in meinem Post alles drin was wie wo sein muss xD
das funktioniert auch wenn du es anpasst mit deine Daten vom pbs Server und der Mac Adresse
 
Ok, mal sehen ob ich das begriffen habe..

Auf dem PVE Server habe ich ein vzdump-hook-script file erstellt:

nano /usr/local/bin/vzdump-hook-script

Der inhalt des files:

Code:
#!/bin/bash

if [ "$1" == "backup-start" ]; then
fi

if [ "$1" == "backup-end" ]; then
fi

if [ "$1" == "job-end" ]; then
ssh root@192.168.0.10 "poweroff < /dev/null &"
fi

exit 0

Danach habe ich jobs.cfg aangepasst:

nano /etc/pve/jobs.cfg

Inhalt:

Code:
GNU nano 5.4            /etc/pve/jobs.cfg
vzdump: backup-11111111-1111
        comment regular full backup
        schedule 22:15
        all 1
        enabled 1
        mailnotification failure
        mailto ich@protonmail.ch
        mode stop
        node PVE
        storage PBS
      script /usr/local/bin/vzdump-hook-script

Wird das funktionieren?


und noch etwas fürs verständniss:
Was ist der nutzen dieser Einträge im Skript:

Code:
if [ "$1" == "backup-start" ]; then
fi

if [ "$1" == "backup-end" ]; then
fi

Wenn ich das richtig verstehe gibt es da gar keine argumente/Aufträge.

und
wofür ist das
Code:
quiet 1
im /etc/pve/jobs.cfg von @bluesite ?
 
Last edited:
Ok, mal sehen ob ich das begriffen habe..

Auf dem PVE Server habe ich ein vzdump-hook-script file erstellt:

nano /usr/local/bin/vzdump-hook-script

Der inhalt des files:

Code:
#!/bin/bash

if [ "$1" == "backup-start" ]; then
fi

if [ "$1" == "backup-end" ]; then
fi

if [ "$1" == "job-end" ]; then
ssh root@192.168.0.10 "poweroff < /dev/null &"
fi

exit 0

Danach habe ich jobs.cfg aangepasst:

nano /etc/pve/jobs.cfg

Inhalt:

Code:
GNU nano 5.4            /etc/pve/jobs.cfg
vzdump: backup-11111111-1111
        comment regular full backup
        schedule 22:15
        all 1
        enabled 1
        mailnotification failure
        mailto ich@protonmail.ch
        mode stop
        node PVE
        storage PBS
      script /usr/local/bin/vzdump-hook-script

Wird das funktionieren?


und noch etwas fürs verständniss:
Was ist der nutzen dieser Einträge im Skript:

Code:
if [ "$1" == "backup-start" ]; then
fi

if [ "$1" == "backup-end" ]; then
fi

Wenn ich das richtig verstehe gibt es da gar keine argumente/Aufträge.
backup-start und backup-end sind für einzelne VMs falls du da jeweils vorher oder nachher noch Befehle ausführen lassen möchtest

z.B. sowas in der Art

Code:
    if [ "$vmid" == "500" ]; then
        echo "rtorrent service will be stopped";
        if ssh -qn root@squid sudo service squid status ; then
           ssh root@ru -p 22 "systemctl stop squid.service"
        else
             echo "squid is not running";
        fi
       ssh root@192.168.x.x -p 22 "umount /home/Daten"
    fi
und
wofür ist das
Code:
quiet 1
im /etc/pve/jobs.cfg von @bluesite ?

das quit 1 ist dafür das er während dem Backup keine Ausgabe in der Konsole macht
 
Ich habs jetzt mal probiert und bekomme einen fehler:
/usr/local/bin/vzdump-hook-script is not executable

ich habs mit:
chmod -x /usr/local/bin/vzdump-hook-script
probiert,
klappt aber noch nicht. Was mache ich noch falsch?
 
hm sollte eigentlich gehen,
was kommt denn wenn Du es manuell ausführst
also in der Konsole /usr/local/bin/vzdump-hook-script eingibst
 
hm sollte eigentlich gehen,
was kommt denn wenn Du es manuell ausführst
also in der Konsole /usr/local/bin/vzdump-hook-script eingibst

Ich bin etwas verwirrt... hier der output:

Code:
root@PVE:~# /usr/local/bin/vzdump-hook-script
-bash: /usr/local/bin/vzdump-hook-script: Permission denied
root@PVE:~# ls -lh /usr/local/bin/vzdump-hook-script
-rw-r--r-- 1 root root 181 Feb 22 09:29 /usr/local/bin/vzdump-hook-script
 
ah xD ja klar du musst ja auch
chmod +x /usr/local/bin/vzdump-hook-script
oder chmod 755 /usr/local/bin/vzdump-hook-script

dann ist es ausführbar
-x macht es nicht mehr ausführbar
 
  • Like
Reactions: twl
ah xD ja klar du musst ja auch
chmod +x /usr/local/bin/vzdump-hook-script
oder chmod 755 /usr/local/bin/vzdump-hook-script

dann ist es ausführbar
-x macht es nicht mehr ausführbar
:p wie dumm von mir haha..

Jetzt hat's geklappt, aber ich hatte noch ein:
Code:
INFO: starting new backup job: vzdump --script /usr/local/bin/vzdump-hook-script --storage PBS --all 1 --mailnotification failure --mailto ich@protonmail.ch --node PVE --mode stop
INFO: /usr/local/bin/vzdump-hook-script: line 4: syntax error near unexpected token `fi'
INFO: /usr/local/bin/vzdump-hook-script: line 4: `fi'
INFO: /usr/local/bin/vzdump-hook-script: line 4: syntax error near unexpected token `fi'
INFO: /usr/local/bin/vzdump-hook-script: line 4: `fi'
TASK ERROR: command '/usr/local/bin/vzdump-hook-script job-abort' failed: exit code 2

Es scheint so als ob jedes if ein argument braucht. Sonst gibt's einen fehler und es bricht ab. Darum muss
/usr/local/bin/vzdump-hook-script so aussehen:

Code:
#!/bin/bash

if [ "$1" == "job-end" ]; then
ssh root@192.168.0.10 "poweroff < /dev/null &"
fi

exit 0

Jetzt macht's gerade ein Backup, wenn es mit dem herunterfahren klappt, mache ich noch einen weiteren Post in dem ich alles zusammenfasse. Falls sonst mal jemand sowas will.
Vielen Dank schon mal @bluesite
 
ok, das backup hat abgeschlossen, aber der PBS läuft noch.
Gibt's irgendwo ein log file?

_____________________________________
Wenn ich das Skript richtig verstehe sollte es via SSH vom PVE einen 'shutdown' befehl an den PBS senden:
ssh root@192.168.0.10 "poweroff < /dev/null &"

diesen Teil verstehe ich aber nicht:
< /dev/null &"
was tut das genau?


Weiter, braucht der SSH Befehl nicht auch ein passwort um den 'shutdown' Befehl zu senden?


Wie oben gesagt, ich kann leider (noch) kein bash script.
 
Hier eine Zusammenfassung:
Proxmox Backup Server nach abgeschlossenem Backup automatisch herunterfahren
[Hook Skript Option]


Vorbereitung
Proxmox Virtual Enviroment (PVE) muss ohne Passwort via SSH auf den Proxmox Backup Server (PBS) zugreifen können.
(SSH Schlüssel muss generiert werden) Hier eine Anleitung in Englisch.


Hook Skript erstellen
Auf dem PVE erstelle eine vzdump-hook-script Datei.

nano /usr/local/bin/vzdump-hook-script

Die Datei muss folgenden Inhalt haben:

Code:
#!/bin/bash

if [ "$1" == "job-end" ]; then
ssh root@IP-ADRESSE-DES-PBS "poweroff < /dev/null &"
fi

exit 0
Bitte: "IP-ADRESSE-DES-PBS" mit der IP des PSB ersetzen.

Bei Bedarf können weitere Befehle im Skript hinterlegt werden. Hier ein Beispiel:

Code:
if [ "$1" == "backup-start" ]; then
etherwake xx:xx:xx:xx:xx   #(mac Adresse vom pbs Server)
ping pbsserver -c 60
fi


if [ "$1" == "backup-end" ]; then

fi

Nun muss die Datei mit
chmod +x /usr/local/bin/vzdump-hook-script
ausführbahr gemacht werden.


Hook Skript zum Backup Auftrag hinzufügen
Immer noch auf dem PVE muss die jobs.cfg Datei angepasst werden.

nano /etc/pve/jobs.cfg

Folgende Zeile muss hier eingefügt werden:

script /usr/local/bin/vzdump-hook-script

(Die meisten Einstellungen in dieser Datei können mit der Grafischen Oberfläche des PVE angepasst werden.)

Fertig. Danke an @bluesite
 
Last edited:
Bei mir funktioniert es leider nicht.

Es sieht so aus, vzdump hat volgende grundsätzliche Voraussetzungen (vor dem "job-start" Hook):
1. aktivierte Storage, sonst Fehler: "TASK ERROR: could not activate storage 'pbs-test': storage 'pbs-test' is disabled"
2. erreichbare Storage, sonst Fehler: "TASK ERROR: could not activate storage 'pbs-test': pbs-test: error fetching datastores - 500 Can't connect to pbs-test.lan:8007 (No route to host)"

vzdump Befehl aus Proxmox Task viewer:
vzdump 100 --mailnotification always --mode snapshot --prune-backups 'keep-last=7' --storage pbs-test --all 0 --script /root/bin/backup/vzdump-hook-script --node pve

vzdump-hook-script:
#!/bin/bash if [ "$1" == "job-start" ]; then etherwake XX:YY:ZZ:XX:YY:ZZ ping -W 20 -c 1 pbs-test.lan /usr/sbin/pvesm set pbs-test -disable false fi exit 0
 
Last edited:

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!