Hi Jean, thank you very much. It looks great, but if i can ask, what do i need to change if i want to send email at more addresses or at address which has nothing to do with users from backuppc ?
And little OT question, not only for you. When i send email from backuppc it comes from [EMAIL PROTECTED] to $user and even if i change EMailUserDestDomain and EMailFromUserName nothing change. Thanx for help On Thursday 18 October 2007 22:09:41 Jean-Michel Beuken wrote: > Dear Martin, > > > I am searching after some script or possibility to send email at some > > addresses after every backup, and in this email i need : > > > > 1. What has been backed up. > > 2. When > > 3. If backup was successfull or not > > 4. If not - why > > almost all yours requests ;-) > > in config.pl (or in PC-config file) : > > - send email after a backup : > > $Conf{DumpPostUserCmd} = '/usr/local/BackupPC/bin/BackupNotify $user > $xferOK $host $type $client $hostIP '; > > - or only if the backup is ok > > $Conf{DumpPostUserCmd} = '/usr/local/BackupPC/bin/BackupNotify_succes > $user $xferOK $host $type $client $hostIP '; > > - or only if the backup is not ok > > $Conf{DumpPostUserCmd} = '/usr/local/BackupPC/bin/BackupNotify_echec > $user $xferOK $host $type $client $hostIP '; > > > above 2 scripts (not yet finished but working...) : > > - one sends email with the results (BackupNotify) > - second (analyse_backups) extracts errors from XferLOG (I'm taken some > part of code in the package BackupPC (BackupPC_dump)) > > regards > > jmb > > --------------------------------------------------------------------------- >- [EMAIL PROTECTED] /usr/local/BackupPC/bin > cat BackupNotify > > #!/usr/local/bin/perl > ################# > # > # BackupNotify : send mail after a good or a bad backup > # BackupNotify_succes : send email only after a good backup > # BackupNotify_echec : send email only after a bad backup > # > # jmb 20/06/2006 > # jmb 10/10/2007 > # > # parameters : $user $xferOK $host $type $client $hostIP > # > use Socket; > > $mailprog = '/usr/sbin/sendmail'; > > $user = $ARGV[0]; > $xferOK = $ARGV[1]; > $host = $ARGV[2]; > $type = $ARGV[3]; > $client = $ARGV[4]; > $hostIP = $ARGV[5]; > > $recipient = $user; > > $script = $0; > $succes = 1; > $echec = 1; > > if ($script =~ 'succes'){ $echec = 0; } > if ($script =~ 'echec'){ $succes = 0; } > > # > # extract only errors from XferLOG > # > my $status=`/usr/local/BackupPC/bin/analyse_backups $client`; > ($xferErr,$badFile,$TopDir,$xferlognum) = split(/-/,$status); > chop($xferlognum); > $xferErr = int($xferErr); > $xferlognum = int($xferlognum); > my $list_error=`/usr/local/BackupPC/bin/BackupPC_zcat > $TopDir/pc/$client/XferLOG.$xferlognum.z | grep DENIED | grep -v 'System > Volume Information' | grep -v RECYCLER |grep -v Watson`; > > # > # > $msg = "Rapport de sauvegarde de BackupPC pour le PC \"$client > ($hostIP)\" : \n\n"; > if ( $xferOK) { > if ( length($list_error) > 0) { > $msg .= "Le backup ($type) s'est PRESQUE bien > deroule...\n\n"; > $msg .= "Des erreurs de transfert se sont > produites...\n\n"; $msg .= "Voici la liste des erreurs :\n"; > $msg .= "$list_error\n"; > $msg .= "Ceci peut se produire dans les situations > suivantes :\n"; > $msg .= " - lorsqu'un fichier est en cours > d'utilisation\n"; > $msg .= " - lorsqu'un dossier/fichier a des droits > d'acces trop restrictifs\n\n"; > $msg .= "De toute facon, les gestionnaires sont > prevenus...\n"; > $ccrecipient = "[EMAIL PROTECTED]"; > $subject = "Backup de $client : ok MAIS... !"; > if ( $succes ){ &sendmail($msg); }; > } else { > $msg .= "Le backup ($type) s'est bien deroule\n"; > $ccrecipient = ""; > $subject = "Backup de $client : OK !"; > if ( $succes ){ &sendmail($msg); }; > } > } else { > $msg .= "Le backup ($type) a pose probleme ! \n"; > $subject = "Probleme de backup de $client..."; > if ( $echec ) { &sendmail($msg); }; > } > > sub sendmail { > my($msg) = @_; > open(MAIL, "|$mailprog -t") && do { > print MAIL "To: $recipient\n"; > print MAIL "From: [EMAIL PROTECTED]"; > print MAIL "Cc: $ccrecipient\n"; > # print MAIL "Bcc:\n"; > print MAIL "Subject: $subject \n\n"; > print MAIL "$msg\n"; > print MAIL "\nVisiter regulierement le site > <http://www.uclouvain.be/backuppc>\n"; > print MAIL "\nContact support : mailto:[EMAIL PROTECTED]"; > close (MAIL); > }; > } > --------------------------------------------------------------------------- >- > > [EMAIL PROTECTED] /usr/local/BackupPC/bin > cat analyse_backups > #!/usr/local/bin/perl > #============================================================= -*-perl-*- > # > # BackupPC_ > > use strict; > no utf8; > use lib "/usr/local/BackupPC3/lib"; > use BackupPC::Lib; > use BackupPC::FileZIO; > use BackupPC::Storage; > use BackupPC::Xfer::Smb; > use BackupPC::Xfer::Tar; > use BackupPC::Xfer::Rsync; > use BackupPC::Xfer::BackupPCd; > use Encode; > use Socket; > use File::Path; > use File::Find; > use Getopt::Std; > > ########################################################################### > # Initialize > ########################################################################### > > die("BackupPC::Lib->new failed\n") if ( !(my $bpc = BackupPC::Lib->new) ); > my $TopDir = $bpc->TopDir(); > my $BinDir = $bpc->BinDir(); > my %Conf = $bpc->Conf(); > my $NeedPostCmd; > my $Hosts; > my $SigName; > my $Abort; > > $bpc->ChildInit(); > > my %opts; > if ( !getopts("defiv", \%opts) || @ARGV != 1 ) { > print("usage: $0 [-d] [-e] [-f] [-i] [-v] <client>\n"); > exit(1); > } > if ( $ARGV[0] !~ /^([\w\.\s-]+)$/ ) { > print("$0: bad client name '$ARGV[0]'\n"); > exit(1); > } > > my $client = $1; # BackupPC's client name (might not be real host name) > my $hostIP; # this is the IP address > my $host; # this is the real host name > my($clientURI, $user); > my $Dir = "$TopDir/pc/$client"; > my @xferPid = (); > my $tarPid = -1; > my($needLink, @Backups, $type); > my($incrBaseTime, $incrBaseBkupNum, $incrBaseLevel, $incrLevel); > my $lastFullTime = 0; > my $lastIncrTime = 0; > my $partialIdx = -1; > my $partialNum; > my $lastBkupNum; > my $lastPartial = 0; > my(@lastIdxByLevel, $incrCntSinceFull); > > # > # Read Backup information, and find times of the most recent full and > # incremental backups. Also figure out which backup we will use > # as a starting point for an incremental. > # > # my $flds = { > # BackupFields => [qw( > # num type startTime endTime > # nFiles size nFilesExist sizeExist nFilesNew sizeNew > # xferErrs xferBadFile xferBadShare tarErrs > # compress sizeExistComp sizeNewComp > # noFill fillFromNum mangle xferMethod level > # charset > # )], > # > @Backups = $bpc->BackupInfoRead($client); > ## @Backups = sort( { $a->{startTime} <=> $b->{startTime} }, @Backups); > my $maxbackups; > for ( my $i = 0 ; $i < @Backups ; $i++ ) { > $needLink = 1 if ( $Backups[$i]{nFilesNew} eq "" > > || -f "$Dir/NewFileList.$Backups[$i]{num}" ); > > if ( $Backups[$i]{type} eq "full" ) { > $incrCntSinceFull = 0; > $lastBkupNum = $Backups[$i]{num}; > $lastIdxByLevel[0] = $i; > if ( $lastFullTime < $Backups[$i]{startTime} ) { > $lastFullTime = $Backups[$i]{startTime}; > } > } elsif ( $Backups[$i]{type} eq "incr" ) { > $incrCntSinceFull++; > $lastBkupNum = $Backups[$i]{num}; > $lastIdxByLevel[$Backups[$i]{level}] = $i; > $lastIncrTime = $Backups[$i]{startTime} > if ( $lastIncrTime < $Backups[$i]{startTime} ); > } elsif ( $Backups[$i]{type} eq "partial" ) { > $partialIdx = $i; > $lastPartial = $Backups[$i]{startTime}; > $partialNum = $Backups[$i]{num}; > } > $maxbackups = $i; > } > print > "$Backups[$maxbackups]{xferErrs}-$Backups[$maxbackups]{xferBadFile}-$TopDir >-$lastBkupNum\n"; > > exit(0); ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ BackupPC-users mailing list BackupPC-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/backuppc-users http://backuppc.sourceforge.net/