#!/usr/local/bin/perl # Actually execute a backup require './bacula-backup-lib.pl'; &ui_print_unbuffered_header(undef, $text{'backup_title'}, ""); &ReadParse(); print "",&text('backup_run', "$in{'job'}"),"\n"; print "
"; $h = &open_console(); # Clear messages &console_cmd($h, "messages"); # Select the job to run &sysprint($h->{'infh'}, "run\n"); &wait_for($h->{'outfh'}, 'run\\n'); $rv = &wait_for($h->{'outfh'}, 'Select Job.*:'); print $wait_for_input; if ($rv == 0 && $wait_for_input =~ /(\d+):\s+\Q$in{'job'}\E/) { &sysprint($h->{'infh'}, "$1\n"); } else { &job_error($text{'backup_ejob'}); } # Say that it is OK $rv = &wait_for($h->{'outfh'}, 'OK to run.*:'); print $wait_for_input; if ($rv == 0) { &sysprint($h->{'infh'}, "yes\n"); } else { &job_error($text{'backup_eok'}); } print ""; if ($in{'wait'}) { # Wait till we have a status print "\n"; print "",$text{'backup_running'},"\n"; print "
"; while(1) { $out = &console_cmd($h, "messages"); if ($out !~ /You\s+have\s+no\s+messages/i) { print $out; } if ($out =~ /Termination:\s+(.*)/) { $status = $1; last; } sleep(1); } print "\n"; if ($status =~ /Backup\s+OK/i && $status !~ /warning/i) { print "",$text{'backup_done'},"
\n"; } else { print "",$text{'backup_failed'},"
\n"; } } else { # Let it fly print "",$text{'backup_running2'},"
\n"; } &close_console($h); &webmin_log("backup", $in{'job'}); &ui_print_footer("backup_form.cgi", $text{'backup_return'}); sub job_error { &close_console($h); print "\n"; print "",@_,"
\n"; &ui_print_footer("backup_form.cgi", $text{'backup_return'}); exit; }