Skip to content
zurück

Backup Hook Script für Proxmox

Published:  at  11:11

Mit den Script kann während, vor oder nach einem Backup bestimmte Aktionen durchgeführt werden. Uptime Kuma soll nach einem Backup benachrichtigt werden.

Konfigurationsdatei von Proxmox editieren und dort die ausführen des Scripts hinterlegen.

nano /etc/pve/jobs.cfg
...
script /root/uptime-nachricht.pl
...

Das Script wird nach dem Backup-Job ausgeführt und nicht nach jedem Backup. Das Script kann aber auch dafür verwendet werden.

Das Script muss ausführbar sein.

chmod +x /root/uptime-nachricht.pl
#!/usr/bin/perl -w

# Example hook script for vzdump (--script option)
# This can also be added as a line in /etc/vzdump.conf
# e.g. 'script: /usr/local/bin/vzdump-hook-script.pl'


use strict;

print "HOOK: " . join (' ', @ARGV) . "\n";

my $phase = shift;

if ($phase eq 'job-init' ||
    $phase eq 'job-start' ||
    $phase eq 'job-end'  ||
    $phase eq 'job-abort') {

    # undef for Proxmox Backup Server storages
    # undef in phase 'job-init' except when --dumpdir is used directly
    my $dumpdir = $ENV{DUMPDIR};

    # undef when --dumpdir is used directly
    my $storeid = $ENV{STOREID};

    print "HOOK-ENV: ";
    print "dumpdir=$dumpdir;" if defined($dumpdir);
    print "storeid=$storeid;" if defined($storeid);
    print "\n";

    # example: wake up remote storage node and enable storage
    if ($phase eq 'job-init') {
	#system("wakeonlan AA:BB:CC:DD:EE:FF");
	#sleep(30);
	#system ("/sbin/pvesm set $storeid --disable 0") == 0 ||
	#    die "enabling storage $storeid failed";
    }
    if ($phase eq 'job-end') {
            system ("curl https://uptime.webseite.de/api/push/pDRnkIKjI4?status=up&msg=OK&ping=")
    }
    # example: copy resulting log file to another host using scp
    if ($phase eq 'log-end') {
        #system ("scp $logfile backup-host:/backup-dir") == 0 ||
        #    die "copy log file to backup-host failed";
    }    

    # do what you want

} elsif ($phase eq 'backup-start' ||
	 $phase eq 'backup-end' ||
	 $phase eq 'backup-abort' ||
	 $phase eq 'log-end' ||
	 $phase eq 'pre-stop' ||
	 $phase eq 'pre-restart' ||
	 $phase eq 'post-restart') {

    my $mode = shift; # stop/suspend/snapshot

    my $vmid = shift;

    my $vmtype = $ENV{VMTYPE}; # lxc/qemu

    # undef for Proxmox Backup Server storages
    my $dumpdir = $ENV{DUMPDIR};

    # undef when --dumpdir is used directly
    my $storeid = $ENV{STOREID};

    my $hostname = $ENV{HOSTNAME};

    # target is only available in phase 'backup-end'
    my $target = $ENV{TARGET};

    # logfile is only available in phase 'log-end'
    # undef for Proxmox Backup Server storages
    my $logfile = $ENV{LOGFILE};

    print "HOOK-ENV: ";
    for my $var (qw(vmtype dumpdir storeid hostname target logfile)) {
	print "$var=$ENV{uc($var)};" if defined($ENV{uc($var)});
    }
    print "\n";

    # example: copy resulting backup file to another host using scp
    if ($phase eq 'backup-end') {
           # system ("curl https://uptime.webseite.de/api/push/pDRnkIKjI4?status=up&msg=OK&ping=")
    }

} else {

    die "got unknown phase '$phase'";

}

exit (0);


Älterer Beitrag
Proxmox auf Scope7-1510
Neuerer Beitrag
Masonry Galerie erstellen