From f10f4a1550ec01645f633fc6c4168030c21f207b Mon Sep 17 00:00:00 2001 From: Joe S <31870999+KenwoodFox@users.noreply.github.com> Date: Mon, 2 Nov 2020 17:09:02 -0500 Subject: [PATCH] Minir update --- Dir Config/bacula-dir.conf | 1 + Dir Config/python-scripts/DirStartUp.py | 102 ++++++++++++++++++ .../scripts/webhooks/._sync_3f5c94a4c959.db | Bin 90112 -> 90112 bytes .../scripts/webhooks/Aidan-Bacula-Mail.md | 44 ++++---- .../scripts/webhooks/ChrisProEliteMail.md | 78 ++++++++------ .../scripts/webhooks/Christina-Bacula-Mail.md | 66 +++++++----- .../scripts/webhooks/FireBN-Bacula-Mail.md | 66 ++++++------ .../scripts/webhooks/Julio-Bacula-Mail.md | 60 +++++------ Dir Config/scripts/webhooks/RoboticsMail.md | 64 +++++------ QR-Code.lbl | Bin 0 -> 5120 bytes 10 files changed, 303 insertions(+), 178 deletions(-) create mode 100644 Dir Config/python-scripts/DirStartUp.py create mode 100644 QR-Code.lbl diff --git a/Dir Config/bacula-dir.conf b/Dir Config/bacula-dir.conf index ff3bd15..1f4cc50 100644 --- a/Dir Config/bacula-dir.conf +++ b/Dir Config/bacula-dir.conf @@ -14,6 +14,7 @@ Director { # define myself QueryFile = "/etc/bacula/scripts/query.sql" WorkingDirectory = "/var/lib/bacula" PidDirectory = "/run/bacula" + Scripts Directory = "/etc/bacula/python-scripts" # This is the directory we will store python scrirpts Maximum Concurrent Jobs = 10 Password = "iamnotacrook" # Console password Messages = JoesMail diff --git a/Dir Config/python-scripts/DirStartUp.py b/Dir Config/python-scripts/DirStartUp.py new file mode 100644 index 0000000..7a334ae --- /dev/null +++ b/Dir Config/python-scripts/DirStartUp.py @@ -0,0 +1,102 @@ +# +# Bacula Python interface script for the Director +# + +# You must import both sys and bacula +import sys, bacula + +# This is the list of Bacula daemon events that you +# can receive. +class BaculaEvents(object): + def __init__(self): + # Called here when a new Bacula Events class is + # is created. Normally not used + noop = 1 + + def JobStart(self, job): + """ + Called here when a new job is started. If you want + to do anything with the Job, you must register + events you want to receive. + """ + events = JobEvents() # create instance of Job class + events.job = job # save Bacula's job pointer + job.set_events(events) # register events desired + sys.stderr = events # send error output to Bacula + sys.stdout = events # send stdout to Bacula + jobid = job.JobId; client = job.Client + numvols = job.NumVols + job.JobReport="Python Dir JobStart: JobId=%d Client=%s NumVols=%d\n" % (jobid,client,numvols) + + # Bacula Job is going to terminate + def JobEnd(self, job): + jobid = job.JobId + client = job.Client + job.JobReport="Python Dir JobEnd output: JobId=%d Status=%s Client=%s.\n" % (jobid, job.JobStatus, client) + + # Called here when the Bacula daemon is going to exit + def Exit(self, job): + print "Daemon exiting." + +bacula.set_events(BaculaEvents()) # register daemon events desired + +""" + There are the Job events that you can receive. +""" +class JobEvents(object): + def __init__(self): + # Called here when you instantiate the Job. Not + # normally used + noop = 1 + + def JobInit(self, job): + noop = 1 + if (job.JobId < 2): + startid = job.run("run kernsave") + job.JobReport = "Python started new Job: jobid=%d\n" % startid + print "name=%s version=%s conf=%s working=%s" % (bacula.Name, bacula.Version, bacula.ConfigFile, bacula.WorkingDir) + + def JobRun(self, job): + noop = 1 + + def NewVolume(self, job): + jobid = job.JobId + client = job.Client + numvol = job.NumVols; + print job.CatalogRes + job.JobReport = "JobId=%d Client=%s NumVols=%d" % (jobid, client, numvol) + job.JobReport="Python before New Volume set for Job.\n" + Vol = "TestA-%d" % numvol + job.JobReport = "Exists=%d TestA-%d" % (job.DoesVolumeExist(Vol), numvol) + job.VolumeName="TestA-%d" % numvol + job.JobReport="Python after New Volume set for Job.\n" + return 1 + + def VolumePurged(self, job): + noop = 1 + + # Pass output back to Bacula + def write(self, text): + self.job.write(text) + + # Open file to be backed up. file is the filename + # NOT YET IMPLEMENTED + def open(self, file): + print "Open %s called" % file + self.fd = open('m.py', 'rb') + jobid = self.job.JobId + print "Open: JobId=%d" % jobid + + # Read file data into Bacula memory buffer (mem) + # return length read. 0 => EOF, -1 => error + # NOT YET IMPLEMENTED + def read(self, mem): + print "Read called\n" + len = self.fd.readinto(mem) + print "Read %s bytes into mem.\n" % len + return len + + # Close file + # NOT YET IMPLEMENTED + def close(self): + self.fd.close() \ No newline at end of file diff --git a/Dir Config/scripts/webhooks/._sync_3f5c94a4c959.db b/Dir Config/scripts/webhooks/._sync_3f5c94a4c959.db index 91fd0a40c533f00dfcfe696854f1ed8c8fb4be2c..fe128e7dd9349817ded8b3537050645117d1a058 100644 GIT binary patch delta 1758 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 RIF_Ix%=vd?B)XR|@&mF&NO%AM literal 0 HcmV?d00001