diff options
Diffstat (limited to 'files')
| -rwxr-xr-x | files/checkbackups.pl | 23 | 
1 files changed, 16 insertions, 7 deletions
diff --git a/files/checkbackups.pl b/files/checkbackups.pl index 24632d1..adc4379 100755 --- a/files/checkbackups.pl +++ b/files/checkbackups.pl @@ -59,6 +59,8 @@ foreach my $host (@hosts) {  	chomp($host);  	my $flag="";  	my $type="unknown"; +	my @vservers = (); +	my $state = $STATE_UNKNOWN;  	if (-d $host) {  		# guess the backup type and find a proper stamp file to compare  		# XXX: this doesn't check if the backup was actually successful @@ -66,6 +68,11 @@ foreach my $host (@hosts) {  		if (-d "$host/rdiff-backup") {  			$flag="$host/rdiff-backup/rdiff-backup-data/backup.log";  			$type="rdiff"; +			$vserver_dir = "$host/rdiff-backup/var/lib/vservers"; +    			if (opendir(DIR, $vserver_dir)) { +    				@vservers = grep { /^\./ && -f "$vserver_dir/$_" } readdir(DIR); +    				closedir DIR; +			}  		} elsif (-d "$host/dump") {  			$flag="$host/dump/" . `ls -tr $host/dump | tail -1`;  			chomp($flag); @@ -74,17 +81,16 @@ foreach my $host (@hosts) {  			$flag="$host/dup";  			$type="duplicity";  		} else { -			printf "$host\tbackups\t$STATE_UNKNOWN\tunknown system\n"; +			$message = "unknown system";  			next;  		}  		my @stats = stat($flag);  		if (not @stats) { -			printf "$host\tbackups\t$STATE_UNKNOWN\tcannot stat flag $flag\n"; +			$message = "cannot stat flag $flag";  			next;  		}  		my $t = time();  		my $delta = $t - $stats[9]; -		my $state = $STATE_UNKNOWN;  		if ($delta > $crit) {  			$state = $STATE_CRITICAL;  		} elsif ($delta > $warn) { @@ -92,10 +98,13 @@ foreach my $host (@hosts) {  		} elsif ($delta >= 0) {  			$state = $STATE_OK;  		} -		print "$host\t"; -		print "backups\t$state"; -		print "\t$delta seconds old\n"; +		$message = "$delta seconds old";  	} else { -		printf "$host\tbackups\t$STATE_UNKNOWN\tno directory\n"; +		$message = "no directory"; +	} +} continue { +	printf "$host\tbackups\t$state\t$message\n"; +	foreach my $vserver (@vservers) { +		printf "$vserver\tbackups\t$state\t$message\n";  	}  }  | 
