#!/bin/bash ##################################################################################### # Shellscript : User kann entscheiden, wann das Gerät neugestartet wird. # Autor : Andreas Vogel, macenterprise gmbh, 17.12.2019 ##################################################################################### #################################### Jamf Helper #################################### jamfHelper="/Library/Application Support/JAMF/bin/jamfHelper.app/Contents/MacOS/jamfHelper" jamf="/usr/local/bin/jamf" user=$(stat -f '%u %Su' /dev/console | cut -d ' ' -f 2) INGIcon="/Users/$user/Library/Application Support/com.jamfsoftware.selfservice.mac/Documents/Images/brandingimage.png" Message=" Auf diesem Gerät wurde ein Sicherheitsupdate installiert. Dieses erfordert einen Neurtart des Gerätes. Bitte starte den Rechner jetzt neu oder wähle eine der Optionen aus um den Neustart zu verschieben. A security update has been installed on this device. This requires a reboot of the device. Please restart the computer now or select one of the options to reschedule the restart. " RestartOptions=$("$jamfHelper" -windowType utility -icon "$INGIcon" -title "Please restart" -description "$Message" -button2 "Restart in" -showDelayOptions "300, 900, 1800, 14400, 21600" -button1 "Immediately" -cancelButton 1 -defaultButton 2 -timeout "5" -countdown -alignCountdown "right") #################################### Variablen #################################### # Variablen zur weiterverarbeitung # Diese Variablen werden benötigt, damit ausgewertet werden kann, welche Taste gedrückt worden ist. # Des Weiteren wird die gewählte Zeit ausgewertet und nach welche Zeit die letzte Warnung in Sekunden # erfolgen wird. buttonClicked="${RestartOptions:$i-1}" result=$RestartOptions delayint=$(echo "$result" | /usr/bin/sed 's/.$//') warndelayint=$(expr $delayint - 60) # Variablen delayRestart # Diese Variablen werden für den delayRestart Daemon benutzt. # Die Variablen sind entsprechen nicht den Variablen für die letzte Meldung. defercal=$(($(/bin/date +%s) + delayint)) hour=$(/bin/date -j -f "%s" "$defercal" "+%H") minute=$(/bin/date -j -f "%s" "$defercal" "+%M") # Variablen für LastWarning Daemon # Dieses Variablen werden für den Daemon benutz, der eine Minute vor dem geplanten Neustart # gestartet wird und die Meldung bringt. warndefercal=$(($(/bin/date +%s) + warndelayint)) warnhour=$(/bin/date -j -f "%s" "$warndefercal" "+%H") warnminute=$(/bin/date -j -f "%s" "$warndefercal" "+%M") #################################### Variablen Massage / Icons #################################### InfoIcon="/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/ToolbarInfo.icns" RestartIcon="/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/Sync.icns" RestartMessage="Das System wird in 1 Minute neugestartet. Es erfolgt kein weiterer Hinweis. The system will restart in 1 minute. There is no further notice." InfoMessage="Das System wird aufgrund deiner Auswahl um $hour:$minute neugestartet. The system will restart at $hour:$minute based on your selection " #################################### Create deamen #################################### delayRestart() { /bin/cat < /Library/LaunchDaemons/de.ing.delayRestart.plist Label de.ing.delayRestart ProgramArguments reboot StartCalendarInterval Hour $hour Minute $minute EOF } LastWarningDaemon() { /bin/cat < /Library/LaunchDaemons/de.ing.LastWarningDaemon.plist Label de.ing.LastWarningDaemon ProgramArguments sh /Library/Application Support/JAMF/ING/LastWarningScript.sh StartCalendarInterval Hour $warnhour Minute $warnminute EOF } #################################### Create Script #################################### InfoRestart() { /Library/Application\ Support/JAMF/bin/jamfHelper.app/Contents/MacOS/jamfHelper -windowType utility -icon "$RestartIcon" -title "Info" -description "$InfoMessage" -button1 "OK" -defaultButton 1 -timeout 60 } LastWarningScript() { /bin/cat < /Library/Application Support/JAMF/ING/LastWarningScript.sh #!/bin/bash /Library/Application\ Support/JAMF/bin/jamfHelper.app/Contents/MacOS/jamfHelper -windowType utility -icon "$InfoIcon" -title "Warning" -description "$RestartMessage" -button1 "OK" -defaultButton 1 -timeout 60 EOF } #################################### Create and Load Daemon and Script #################################### StartandLoad() { # set ownership on delayRestart launch daemon chown root:wheel /Library/LaunchDaemons/de.ing.delayRestart.plist chmod 644 /Library/LaunchDaemons/de.ing.delayRestart.plist # set ownership on LastWarningDaemon launch daemon chown root:wheel /Library/LaunchDaemons/de.ing.LastWarningDaemon.plist chmod 644 /Library/LaunchDaemons/de.ing.LastWarningDaemon.plist #load launchd launchctl load /Library/LaunchDaemons/de.ing.delayRestart.plist launchctl load /Library/LaunchDaemons/de.ing.LastWarningDaemon.plist } #################################### Ausführung #################################### if [[ "$buttonClicked" == "2" ]] && [[ ! -z "$delayint" ]] then InfoRestart elif [ "$buttonClicked" == "1" ] then echo "sofort neustarten" fi