forked from jamf/aftermath
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathPeriodic.swift
56 lines (37 loc) · 1.58 KB
/
Periodic.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//
// Periodic.swift
// aftermath
//
// Copyright 2022 JAMF Software, LLC
//
import Foundation
class Periodic: PersistenceModule {
let saveToRawDir: URL
init(saveToRawDir: URL) {
self.saveToRawDir = saveToRawDir
}
func capturePeriodicScripts(urlLocations: [URL], capturedScriptsFile: URL, directory: URL) {
for url in urlLocations {
self.copyFileToCase(fileToCopy: url, toLocation: directory)
do {
self.addTextToFile(atUrl: capturedScriptsFile, text: "/n ----- \(url.path) -----/n")
let contents = try String(contentsOf: url)
self.addTextToFile(atUrl: capturedScriptsFile, text: contents)
} catch {
self.log("Unable to capture periodic scripts")
}
}
}
override func run() {
self.log("Collecting periodic scripts...")
let root = "/etc/periodic/"
let allScripts = ["daily", "weekly", "monthly"]
let capturedScriptsFile = self.createNewCaseFile(dirUrl: moduleDirRoot, filename: "periodic.txt")
for loc in allScripts {
let directory = "\(root)\(loc)/"
let periodicDir = self.createNewDir(dir: self.saveToRawDir, dirname: "periodic/\(loc)")
let scripts = filemanager.filesInDirRecursive(path: directory)
capturePeriodicScripts(urlLocations: scripts, capturedScriptsFile: capturedScriptsFile, directory: periodicDir)
}
}
}