#!/usr/bin/perl
#
# Ce script scan les répertoires de backups des staffers Claranet, et
# génère un fichier csv contenant les dates des derniers backups effectués
# pour chaque personne.
#
# 2005.11.02 Yann Grossel / Claranet
#

use warnings;
use strict;

# Configuration

my $email_to		= 'toto@toto.fr';
my $email_from		= 'pouet@poe.com';
my $directory		= '/data/internal_backup';
my $tmp_dir			= '/var/tmp';
my $tmp_file		= 'backups-dates.csv';
my $separator		= ';';

# -----------------

chdir $directory || die "Can't cd to $directory: $!\n";

unlink $tmp_dir . '/' . $tmp_file;

open F, "> $tmp_dir/$tmp_file" or die "Can't open $tmp_dir/$tmp_file: $!\n";

for my $a (glob '*')
{
	next unless -d $a;
	next if ($a eq 'ARCHIVES');

	my $l = `/usr/bin/find $a -type f ! -size 0 -printf '%T@ %p\n' | /usr/bin/sort -n | /usr/bin/tail -n 1`;

	if ($l =~ m/^\s*$/)
	{
		printf F "%s%s\".\"\n", $a, $separator;
	}
	else
	{
		my ($i, $d, $h, $m);

		$l =~ m/^(\d+)\s+/;

		$i = time() - $1;

		$d = $i / 86400;
		$i = $i % 86400;
		$h = $i / 3600;
		$i = $i % 3600;
		$m = $i / 60;
		$i = $i % 60;

		printf F "%s%s\"%dj (+%.2d:%.2d:%.2d)\"\n", $a, $separator, $d, $h, $m, $i;
	}
}

close F;

# Envoi du mail.

my ($day, $month, $year) = (localtime)[3..5];

my @cmd;

push @cmd, "/usr/bin/mime-construct";
push @cmd, "--subject";
push @cmd, "[backups-internal] dates des derniers backups";
push @cmd, "--to";
push @cmd, $email_to;
# push @cmd, "--bcc";
# push @cmd, 'yg@fr.clara.net';
push @cmd, "--header";
push @cmd, "From: $email_from";
push @cmd, "--string";
push @cmd, sprintf "\nDelais depuis les derniers internal-backups au %04d-%02d-%02d.\n\n", $year + 1900, $month + 1, $day;
push @cmd, "--attachment";
push @cmd, $tmp_file;
push @cmd, "--type";
push @cmd, "text/csv";
push @cmd, "--file";
push @cmd, $tmp_dir . '/' . $tmp_file;

system(@cmd);

# Terminé.

unlink $tmp_dir . '/' . $tmp_file;

exit 0;

# vim: set ts=3 sw=3:
