r10297@llin: dpavlin | 2006-03-01 14:40:39 +0100
[BackupPC.git] / xls2conf / xls2conf.pl
index 9a3390d..ff12e93 100755 (executable)
@@ -11,10 +11,11 @@ my $oBook = Spreadsheet::ParseExcel::Workbook->Parse($xls_file);
 my %bpc_hosts;
 my %hosts;
 my %smb_share_name;
+my $rsync_share_name;
 
 foreach my $sheet (@{$oBook->{Worksheet}}) {
-       if ($sheet->{Name} !~ m/Instruments/i) {
-#              print "# skipped sheet ",$sheet->{Name},"\n";
+       if ($sheet->{Name} !~ m/(Instruments|sheet1)/i) {
+               print "# skipped sheet ",$sheet->{Name},"\n";
                next;
        }
        for(my $i = $sheet->{MinRow} ; defined $sheet->{MaxRow} && $i <= $sheet->{MaxRow} ; $i++) {
@@ -41,10 +42,8 @@ foreach my $sheet (@{$oBook->{Worksheet}}) {
                my $drive = lc(substr($path,0,1));
 
                my $rsync_share;
-               if ($drive eq 'c') {
-                       $rsync_share = 'cDrive';
-               } elsif ($drive eq 'd') {
-                       $rsync_share = 'dDrive';
+               if ($drive eq 'c' || $drive eq 'd') {
+                       $rsync_share = $drive . 'Drive';
                } else {
                        die "unknown drive '$drive' from path '$path'";
                }
@@ -54,17 +53,17 @@ foreach my $sheet (@{$oBook->{Worksheet}}) {
 
                open(O, "> conf/${conf_name}.pl") || die "can't open conf/${conf_name}.pl: $!";
 
-               if ($os =~ m#(98|95)#) {
+               if ($os =~ m#(98|95|9x)#i) {
 
                        print "$ip\tsmb://${share}\n";
 
-                       push @{$smb_share_name{$hostname}}, $share;
+                       push @{$smb_share_name{$conf_name}}, $share;
 
 print O qq`
-# $ip $os
+# $conf_name on $hostname $ip, $os
 \$Conf{XferMethod} = 'smb';
 \$Conf{SmbHostName} = '$hostname';
-\$Conf{SmbShareName} = [ '`,join("','", @{$smb_share_name{$hostname}}),qq`' ];
+\$Conf{SmbShareName} = [ '`,join("','", @{$smb_share_name{$conf_name}}),qq`' ];
 `;
 
                        if ($hosts{$ip}) {
@@ -84,12 +83,21 @@ print O qq`
                        print "$ip\trsync://${share}::${path}\n";
 
                        $path =~ s/([ '])/\\$1/g;
-
+                       push @{$rsync_share_name->{$conf_name}->{$rsync_share}}, $path;
+
+                       my @shares = sort keys %{$rsync_share_name->{$conf_name}};
+                       my $rsync_share_names = "'" . join("','", @shares) . "'";
+                       my @backup_files_only;
+                       foreach my $s (@shares) {
+                               foreach my $p (@{$rsync_share_name->{$conf_name}->{$s}}) {
+                                       push @backup_files_only, "'$s' => '$p'";
+                               }
+                       }
 print O qq`
-# $ip $os
+# $conf_name on $hostname $ip, $os
 \$Conf{XferMethod} = 'rsyncd';
-\$Conf{RsyncShareName} = [ '$rsync_share' ];
-\$Conf{BackupFilesOnly} = [ '$rsync_share' => "$path" ];
+\$Conf{RsyncShareName} = [ $rsync_share_names ];
+\$Conf{BackupFilesOnly} = [ `, join(",", @backup_files_only), qq` ];
 `;
 
                }