Skip to main content

I am starting to use Self Service to push out Office Updates (primary concern), Flash player updates, run RUM to update CS 6 installs...pretty much all updates (even Apple Software Updates soon). I do this by promoting the updates through a series of smart groups. Is there any good way to notify a logged in user that they have new Self Service items waiting?



So far I'm having no luck with scripting a decent solution.

@mm2270 Im looking at having it maybe use some error handling/logging for each policy trigger as it goes and then try running any failed commands 3 more times....  This is what I have so far to add to it any suggestions?

 

## Call the Jamf policy by its event trigger and retry if it fails
success=0
while [ $success -eq 0 ]; do
/usr/local/bin/jamf policy -event "$trigger"
if [ $? -eq 0 ]; then
success=1
else
echo "Policy failed, retrying in 10 seconds..."
sleep 10
fi
done

 

Or maybe something like this?

## Function that calls each policy trigger and customizes the message during each loop
## Uses a case statement to determine the heading text for each custom event trigger
function callPolicy ()
{
local tries=0
local success=0

## This case statement determines which heading text we need to use in jamfHelper for each policy trigger
case $trigger in
rosetta)
heading_text="Rosetta if needed"
;;
policy)
heading_text="Outstanding Policies"
;;
SSO)
heading_text="Microsoft Company Portal"
;;
creativecloud)
heading_text="Creative Cloud if needed"
;;
Office2019)
heading_text="Microsoft Office"
;;
chrome)
heading_text="Google Chrome"
;;
firefox)
heading_text="Mozilla Firefox"
;;
zoom)
heading_text="Zoom"
;;
CocoaDialogue)
heading_text="AUP"
;;
dockutil)
heading_text="Set Dock Utility"
;;
desktoppr)
heading_text="Set Desktop Utility"
;;
umbrella)
heading_text="Cisco Umbrella if needed"
;;
testnav)
heading_text="TestNav"
;;
firmware)
heading_text="Firmware Password if needed"
;;
recon)
heading_text="Running Final Recon"
;;
esac

while [ $tries -lt 3 ] && [ $success -eq 0 ]
do
## Call jamfHelper and customize the display slightly
"$jamf_helper" \\
-windowType utility \\
-title "Base App Installs" \\
-heading "$heading_text" \\
-description "Completing Step $i of $total_steps" \\
-icon "$icon" &

## Call the Jamf policy by its event trigger
/usr/local/bin/jamf policy -event "$trigger"

## Check if the policy call was successful
if [ $? -eq 0 ]; then
success=1
else
tries=$((tries+1))
sleep 2
killall jamfHelper
fi
done
}

 


Hey @GabePPS I think capturing the policy exit status the way you're doing in your first example should work, but it's of course something you'll need to test out. As long as each policy trigger is in fact calling a policy from Jamf Pro, then that should be ok.


Hey @GabePPS I think capturing the policy exit status the way you're doing in your first example should work, but it's of course something you'll need to test out. As long as each policy trigger is in fact calling a policy from Jamf Pro, then that should be ok.


@mm2270 Thanks! So Im trying something like this to combine the two ideas, just to keep it from looping forever like you had suggested in another script you helped with.

# Set the maximum number of times to retry the policy
max_retry_count=3

# Call the Jamf policy by its event trigger and retry if it fails
retry_count=0
success=0

while [ $retry_count -lt $max_retry_count ] && [ $success -eq 0 ]; do
/usr/local/bin/jamf policy -event "$trigger"
if [ $? -eq 0 ]; then
success=1
else
echo "Policy failed, retrying in 10 seconds..."
retry_count=$((retry_count+1))
sleep 10
fi
done

 


Reply