#!/bin/bash ###################################################################################################################################################### setDeferral (){ BundleID="${1}" DeferralType="${2}" DeferralValue="${3}" DeferralPlist="${4}" if [[ "$DeferralType" == "date" ]]; then DeferralDate="$(/usr/libexec/PlistBuddy -c "print :$BundleID:date" "$DeferralPlist" 2>/dev/null)" # Set deferral date if [[ -n "$DeferralDate" ]] && [[ ! "$DeferralDate" =~ "File Doesn't Exist" ]]; then # /usr/libexec/PlistBuddy -c "set :$BundleID:date '07/04/2019 11:21:51 +0000'" "$DeferralPlist" /usr/libexec/PlistBuddy -c "set :$BundleID:date $DeferralValue" "$DeferralPlist" 2>/dev/null else # /usr/libexec/PlistBuddy -c "add :$BundleID:date date '07/04/2019 11:21:51 +0000'" "$DeferralPlist" /usr/libexec/PlistBuddy -c "add :$BundleID:date date $DeferralValue" "$DeferralPlist" 2>/dev/null fi elif [[ "$DeferralType" == "count" ]]; then DeferralCount="$(/usr/libexec/PlistBuddy -c "print :$BundleID:count" "$DeferralPlist" 2>/dev/null)" # Set deferral count if [[ -n "$DeferralCount" ]] && [[ ! "$DeferralCount" =~ "File Doesn't Exist" ]]; then /usr/libexec/PlistBuddy -c "set :$BundleID:count $DeferralValue" "$DeferralPlist" 2>/dev/null else /usr/libexec/PlistBuddy -c "add :$BundleID:count integer $DeferralValue" "$DeferralPlist" 2>/dev/null fi else echo "Falscher Stundungstyp verwendet" exit 14 fi } ###################################################################################################################################################### DeferralPlist="/Users/90022300/Desktop/com.custom.officeupdate.plist" BundleID="de.ing.update_app" DeferralType="count" ###################################################################################################################################################### # Setzen der Tage bzw. die Anzahl der Versuche, die das Update verschieben können. DeferralValue="${4}" # Wenn nicht in $4 gesetzt ist, wird hier der Standard gesetzt. Dieser kann den in $4 geändert werden. if [[ -z "$DeferralValue" ]]; then DeferralValue=3 fi ###################################################################################################################################################### # Liest den Wert aus der Plist aus. Dieser wird dann in der StandardUpdatePrompt Ausgabe mit angegeben. CurrentDeferralValue="$(/usr/libexec/PlistBuddy -c "print :$BundleID:count" "$DeferralPlist" 2>/dev/null)" # Richten Sie den Verzögerungswert ein, falls er noch nicht vorhanden ist if [[ -z "$CurrentDeferralValue" ]] || [[ "$CurrentDeferralValue" =~ "File Doesn't Exist" ]]; then setDeferral "$BundleID" "$DeferralType" "$DeferralValue" "$DeferralPlist" CurrentDeferralValue="$(/usr/libexec/PlistBuddy -c "print :$BundleID:count" "$DeferralPlist" 2>/dev/null)" fi jamfHelper="/Library/Application Support/JAMF/bin/jamfHelper.app/Contents/MacOS/jamfHelper" jamf="/usr/local/bin/jamf" ###################################################################################################################################################### # Gibt die Zeit in Sekunden, wie lange das Fenster bleiden soll TimeOutinSec="${5}" # Falls kein Wert ind $5 gesetzt worden ist, wird dieser hier bestimmt und als Standard genutzt. if [[ -z "$DeferralValue" ]]; then TimeOutinSec="900" fi ###################################################################################################################################################### application="${6}" # Standard Update Message StandardUpdatePrompt="Für $application ist ein Update verfügbar. Klicken Sie auf Fortsetzen, um mit der Installation zu beginnen. Wenn Sie den Vorgang zu diesem Zeitpunkt nicht starten können, können Sie den Vorgang um einen Tag verschieben. Tage bis zur erzwungenen Installation: $CurrentDeferralValue Tage Sie können jederzeit die Installation über den ING Germany Self Service durchführen. Nach Ablauf der Frist wird ein Update aus Sicherheitsgründen erzwungen !" # Erzwungene Aktualisierungsnachricht ForcedUpdatePrompt="Für Ihren Rechner ist ein $application Update notwendig. Sie haben die Aktualisierung bereits so oft wie möglich verschoben. Bitte speichern Sie Ihre Arbeit jetzt und klicken Sie auf Aktualisieren. Das Update wird ansonsten automatisch durchgeführt." # INGIcon INGIcon="/Users/90022300/Library/Application Support/com.jamfsoftware.selfservice.mac/Documents/Images/brandingimage.png" ## Functions ## updateGUI (){ jamf recon # jamf policy -id $7 rm -rf $DeferralPlist } # Jemand ist angemeldet. Aufforderung, falls Updates NUR dann neu gestartet werden müssen, wenn der Update-Timer nicht Null erreicht hat if [[ "$CurrentDeferralValue" -gt 0 ]]; then # Reduzieren Sie den Timer um 1. Das Skript wird am nächsten Tag erneut ausgeführt let CurrTimer=$CurrentDeferralValue-1 setDeferral "$BundleID" "$DeferralType" "$CurrTimer" "$DeferralPlist" HELPER=$("$jamfHelper" -windowType utility -icon "$INGIcon" -title "Office-Updates" -description "$StandardUpdatePrompt" -button1 "Fortsetzen" -button2 "Verschieben" -cancelButton "2" -defaultButton 2 -timeout "$TimeOutinSec") echo "Jamf Helper Exit Code: $HELPER" # Wenn sie auf "Aktualisieren" klicken, werden sie zum Einstellungsbereich für Software-Updates weitergeleitet if [ "$HELPER" == "0" ]; then updateGUI fi exit 0 else HELPER=$("$jamfHelper" -windowType utility -title "Office-Updates" -description "$ForcedUpdatePrompt" -button1 "Update" -defaultButton 1 -timeout "$TimeOutinSec" -countdown -alignCountdown "right") echo "Jamf Helper Exit Code: $HELPER" # Wenn sie auf Updates installieren klicken, führen Sie die Updates aus # Offenbar hat jemand versucht, jamfHelper zu beenden, oder der jamfHelper-Bildschirm hat eine Zeitüberschreitung # Der Timer ist bereits 0, die Updates werden automatisch ausgeführt, der Endbenutzer wurde gewarnt! if [[ "$HELPER" == "0" ]] || [[ "$HELPER" == "239" ]]; then updateGUI fi fi exit 0