1 |
diff -ruN e-smith-backup-2.4.0.p24/root/etc/e-smith/events/actions/workstation-backup-dar e-smith-backup-2.4.0/root/etc/e-smith/events/actions/workstation-backup-dar |
2 |
--- e-smith-backup-2.4.0.p24/root/etc/e-smith/events/actions/workstation-backup-dar 2014-02-05 16:43:10.000000000 -0800 |
3 |
+++ e-smith-backup-2.4.0/root/etc/e-smith/events/actions/workstation-backup-dar 2014-02-08 14:46:56.000000000 -0800 |
4 |
@@ -36,21 +36,16 @@ |
5 |
sub run_backup; |
6 |
|
7 |
my $job = shift || 'DailyBackup'; |
8 |
-my $report; |
9 |
- |
10 |
my $confdb = esmith::ConfigDB->open; |
11 |
my $backupwk = $confdb->get('backupwk') or die "No backupwk db entry found\n"; |
12 |
-my $internalinterface = $confdb->get('InternalInterface') or die "No internalinterface db entry found\n"; |
13 |
- |
14 |
my $bkname = strftime '%Y%m%d%H%M%S', localtime; |
15 |
my $dow = strftime '%w', localtime; |
16 |
+my $ref = ""; |
17 |
|
18 |
my $id = $backupwk->prop('Id') || |
19 |
$confdb->get('SystemName')->value . "." . $confdb->get('DomainName')->value; |
20 |
-my $err; |
21 |
-my $ref = ""; |
22 |
- |
23 |
- |
24 |
+my $internalinterface = $confdb->get('InternalInterface') or die "No internalinterface db entry found\n"; |
25 |
+my $ether = $internalinterface->prop('Name'); |
26 |
my $smbhost = $backupwk->prop('SmbHost'); |
27 |
my $smbshare = $backupwk->prop('SmbShare'); |
28 |
my $smbhostmac = $backupwk->prop('SmbHostMAC'); |
29 |
@@ -66,29 +61,21 @@ |
30 |
my $VFSType = $backupwk->prop('VFSType') || 'cifs'; |
31 |
my $fullday = $backupwk->prop('FullDay'); $fullday = 7 unless defined $fullday; |
32 |
my $mail = $backupwk->prop('MailNotify') || 'yes'; |
33 |
-my $mntdir = ($VFSType eq 'usb') ? "\/$smbshare" : $backupwk->prop('Mount') || '/mnt/smb'; |
34 |
my $frommail = $backupwk->prop('FromMail') || 'admin-backup'; |
35 |
my $tomail = $backupwk->prop('ToMail') || 'admin'; |
36 |
+my $mntdir = ($VFSType eq 'usb') ? "\/$smbshare" : $backupwk->prop('Mount') || '/mnt/smb'; |
37 |
my $deleteearly = $backupwk->prop('DeleteEarly') || 'false'; |
38 |
-my $ether = $internalinterface->prop('Name'); |
39 |
|
40 |
- |
41 |
-$report .= "From: ".$frommail."\n"; |
42 |
+my $report = "From: $frommail\n"; |
43 |
$report .= "To: $tomail\n"; |
44 |
-$report .= "Subject: Daily Backup Report: ".$id."\n\n"; |
45 |
+$report .= "Subject: Daily Backup Report: $id\n\n"; |
46 |
$report .= "================================== \n"; |
47 |
$report .= "DAILY BACKUP TO WORKSTATION REPORT \n"; |
48 |
$report .= "================================== \n"; |
49 |
-$report .= "Backup of ".$id." started at " .localtime() . "\n"; |
50 |
+$report .= "Backup of $id started at " .localtime() . "\n"; |
51 |
|
52 |
# ping the SMB Host to see if it is awake |
53 |
- |
54 |
-if (defined($smbhostmac) && (system("ping -c1 $smbhost > /dev/null") != 0)) { |
55 |
- $report .= "$smbhost might be asleep, attempting to wake\n"; |
56 |
- system("ether-wake -i $ether $smbhostmac"); |
57 |
- $report .= "Waiting $smbhostdelay seconds...\n"; |
58 |
- sleep $smbhostdelay; |
59 |
-} |
60 |
+$report .= &wol ($ether,$smbhost,$smbhostmac,$smbhostdelay); |
61 |
|
62 |
# verify backup directory not already mounted |
63 |
if (!&checkMount ($mntdir)) |
64 |
@@ -102,7 +89,7 @@ |
65 |
createTree ($mntdir); |
66 |
|
67 |
# mount the backup directory |
68 |
-$err = &dmount($smbhost,$smbshare,$mntdir,$login,$password,$VFSType); |
69 |
+my $err = &dmount($smbhost,$smbshare,$mntdir,$login,$password,$VFSType); |
70 |
ldie("Error while mounting <//$smbhost/$smbshare>\n" . $err) if $err; |
71 |
|
72 |
# verify $mntdir is mounted |
73 |
@@ -129,8 +116,8 @@ |
74 |
} |
75 |
|
76 |
# if no set directory, make it |
77 |
-my $setname = "set" . $setnum; |
78 |
-my $setdirname = $mntdir . "/$id/" . $setname; |
79 |
+my $setname = "set$setnum"; |
80 |
+my $setdirname = "$mntdir/$id/$setname"; |
81 |
&createTree ($setdirname); |
82 |
|
83 |
$report .= "Destination //$smbhost/$smbshare/$id/$setname\n"; |
84 |
@@ -247,13 +234,8 @@ |
85 |
|
86 |
$report .= "Backup successfully terminated at ".localtime()."\n"; |
87 |
|
88 |
-if ($mail eq 'yes') |
89 |
-{ |
90 |
- open (MAIL, "|/var/qmail/bin/qmail-inject") |
91 |
- || die "Cannot start mail program: $!\n"; |
92 |
- print MAIL $report; |
93 |
- close(MAIL); |
94 |
-} |
95 |
+# Send the Workstation Backup report |
96 |
+if ($mail eq 'yes') {&sendReport ($report);} |
97 |
|
98 |
exit (0); |
99 |
|
100 |
@@ -265,10 +247,7 @@ |
101 |
$report .= $errmsg; |
102 |
if (($mail eq 'yes') || ($mail eq 'error')) |
103 |
{ |
104 |
- open (MAIL, "|/var/qmail/bin/qmail-inject") |
105 |
- || die "Cannot start mail program: $!: message was $errmsg\n"; |
106 |
- print MAIL $report; |
107 |
- close(MAIL); |
108 |
+ &sendReport ($report,$errmsg); |
109 |
} |
110 |
system("/bin/umount", "$mntdir") if (!&checkMount ($mntdir)); |
111 |
die($errmsg); |
112 |
@@ -425,6 +404,30 @@ |
113 |
} |
114 |
} |
115 |
|
116 |
+sub sendReport |
117 |
+{ |
118 |
+ my $text = shift; |
119 |
+ my $error = shift || ""; |
120 |
+ open (MAIL, "|/var/qmail/bin/qmail-inject") |
121 |
+ || die "Cannot start mail program: $! $error\n"; |
122 |
+ print MAIL $text; |
123 |
+ close(MAIL); |
124 |
+} |
125 |
+ |
126 |
+sub wol |
127 |
+{ |
128 |
+ my ($ether,$host,$mac,$delay) = @_; |
129 |
+ my $output=""; |
130 |
+ |
131 |
+ if (defined($mac) && (system("ping -c1 $host > /dev/null") != 0)) { |
132 |
+ $output .= "$host might be asleep, attempting to wake\n"; |
133 |
+ system("ether-wake -i $ether $mac"); |
134 |
+ $output .= "Waiting $delay seconds...\n"; |
135 |
+ sleep $delay; |
136 |
+ } |
137 |
+ return $output; |
138 |
+} |
139 |
+ |
140 |
sub updateDarCatalog () |
141 |
{ |
142 |
# update dar_manager catalog |
143 |
@@ -467,7 +470,7 @@ |
144 |
} |
145 |
} |
146 |
waitpid ($pid, 0); |
147 |
- $err = WEXITSTATUS($?); |
148 |
+ my $err = WEXITSTATUS($?); |
149 |
close (DAR_LIST); |
150 |
ldie ("Catalog error : $err") if $err; |
151 |
|