-
Notifications
You must be signed in to change notification settings - Fork 21
/
UploadBuildingsList.sh
executable file
·120 lines (93 loc) · 3.2 KB
/
UploadBuildingsList.sh
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/bin/sh
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
# Written by: William Smith
# Professional Services Engineer
# Jamf
# https://github.com/talkingmoose/Jamf-Scripts
#
# Originally posted: July 9, 2016
# Last updated: August 13, 2018
#
# Purpose: Uploads a list of buildings to your Jamf Pro server by reading a
# BuildingsList.txt file or a list pasted into this script. When used
# with DownloadBuildingsList.sh, a Jamf Pro administrator can start with a list
# from an old Jamf Pro server, clean up the text and then upload the text
# to another Jamf Pro server.
#
# The script creates a log file in the same folder as the script.
#
# Except where otherwise noted, this work is licensed under
# http://creativecommons.org/licenses/by/4.0/
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# INSTRUCTIONS
# 1) Modify URL, userName and passWord below to access your Jamf Pro server.
# 2) Edit the buildingsList variable below or modify the script to "cat" a text file with the list.
# 3) Save and run this script via Terminal or an editor with a "run script" feature.
# 4) Verify buildings in your Jamf Pro server.
URL="https://jamfpro.talkingmoose.net:8443"
userName="API-Editor"
passWord="password"
# create the output directory and log file
# in the same directory as this script
# path to this script
currentDirectory=$( /usr/bin/dirname "$0" )
# name of this script
currentScript=$( /usr/bin/basename -s .sh "$0" )
# create log file in same directory as script
logFile="$currentDirectory/$currentScript - $( /bin/date '+%y-%m-%d' ).log"
# functions
function logresult() {
if [ $? = 0 ] ; then
/bin/date "+%Y-%m-%d %H:%M:%S $1" >> "$logFile"
else
/bin/date "+%Y-%m-%d %H:%M:%S $2" >> "$logFile"
fi
}
# the time right now
startTime=$( /bin/date '+%s' )
# start the log
logresult "--------------------- Begin Script ---------------------"
# get list of buildings from a file or from text pasted below
# buildingsList=$( /bin/cat '/path/to/buildingslist.txt' )
# or
buildingsList="Dome of the Rock
La Pedrera
One World Trade Center
St Paul's Cathedral
Petronas Towers
The White House
Leaning Tower of Pisa
The Kaaba
The Shard
St Basil's Cathedral
Colosseum
Taj Mahal
Sydney Opera House
Space Needle
Pantheon
Turning Torso"
logresult "Reading buildings list." "Failed to read buildings list."
# upload building names, one at a time
# the script will not modify buildings that already exist in the Jamf Pro server
while IFS= read aLine
do
THExml="<building><name>$aLine</name></building>"
/usr/bin/curl -k $URL/JSSResource/buildings --user "$userName:$passWord" -H "Content-Type: text/xml" -X POST -d "$THExml"
logresult "Uploaded builidng \"$aLine\"." "Failed to upload building \"$aLine\"."
UPLOAD=$((UPLOAD+1))
done <<< "$buildingsList"
# stop the timer
# calculate how long the script ran
logresult "Completing script."
logresult "Processed $UPLOAD buildings."
# the time right now
stopTime=$( /bin/date '+%s' )
# subtract start time from stop time and log the time in seconds
DIFF=$(($stopTime-$startTime))
logresult "Script operations took $DIFF seconds to complete."
logresult "---------------------- End Script ----------------------
"
exit 0