Posted on 12-19-2016 02:05 AM
Hi everybody! Hope someone can help...
At the moment I'm working on a "First-Setup-Script" to perform some basic steps on a new Mac. This works, more or less, how it should. Except of the notifications. After every finished step, I want to show a small notification to inform the servicedesk member, who will set up the client, that this step has been done and the script itself is in progress.
To realise this, I use the following command
osascript -e 'display notification "ActiveDirectory join has been done" with title "ActiveDirectory - Done"'
When I use this command only to test it, it works without any problem. But running the script, this only leads to a lot of error messages and the notification never shows up.
So I tried to use jamf instead:
jamf displayMessage -message "ActiveDirectory join has been done."
This works, but as long as the servicedesk member not click on OK, the next message won't be shown. Seems like there can only one message window at the moment be displayed.
Maybe someone can help? Is there another, better way to inform about the progress? Or can you figure out, why the notifications work when I enter the command in the Terminal, but not when it comes from the script?
Thanks a lot for any help!
Solved! Go to Solution.
Posted on 12-20-2016 07:39 AM
Yes, its likely the osascript
(Applescript) portion that is the issue. If that is being run as root or by another account on the Mac other than the logged in user, its going to fail, because the OS often restricts Applescript interactions with the current console user, unless the command is run by or as the user. This is why it works if you just plug that line into Terminal, but doesn't work if its run by a jamf policy.
You could use the jamf displayMessage
command, or look at using jamfHelper
for these messages, which doesn't have the same problem. In either case, you'll probably want to push the command into the background with a &
at the end so the script can continue, but then you'd need to shut each process down as it moves to the next item, and the next window.
Truthfully, although its more work up front, you may want to explore using a utility like cocoaDialog for this. Its better for something that requires text changing within the same window. The progressbar
mode can do this fairly easily.
If you need some ideas on either of the above, post back and I can throw an example up, or just point to an existing one. There are plenty of them around.
Posted on 12-20-2016 11:51 AM
Definately use jamfHelper
Allows message over the top of other messages.
Allows message timeouts so they can automatically disappear after a certain amount of time.
Allows messages that don't require buttons.
Allows messages to be placed on different parts of the screen.
Posted on 12-19-2016 11:50 PM
No ideas? :-(
Posted on 12-20-2016 07:39 AM
Yes, its likely the osascript
(Applescript) portion that is the issue. If that is being run as root or by another account on the Mac other than the logged in user, its going to fail, because the OS often restricts Applescript interactions with the current console user, unless the command is run by or as the user. This is why it works if you just plug that line into Terminal, but doesn't work if its run by a jamf policy.
You could use the jamf displayMessage
command, or look at using jamfHelper
for these messages, which doesn't have the same problem. In either case, you'll probably want to push the command into the background with a &
at the end so the script can continue, but then you'd need to shut each process down as it moves to the next item, and the next window.
Truthfully, although its more work up front, you may want to explore using a utility like cocoaDialog for this. Its better for something that requires text changing within the same window. The progressbar
mode can do this fairly easily.
If you need some ideas on either of the above, post back and I can throw an example up, or just point to an existing one. There are plenty of them around.
Posted on 12-20-2016 11:51 AM
Definately use jamfHelper
Allows message over the top of other messages.
Allows message timeouts so they can automatically disappear after a certain amount of time.
Allows messages that don't require buttons.
Allows messages to be placed on different parts of the screen.
Posted on 12-21-2016 06:27 AM
Thanks! This was the direction I needed to be pointed at! :-)
The osascript part kind of worked when I used it that way:
#!/bin/sh
user=`stat -f%Su /dev/console`
sudo -u $user /usr/bin/osascript -e <<EndOfApplescript 'display notification "FileVault2 has been activated" with title "FileVault2 - Done"'
EndOfApplescript
For some reason sometimes it worked.. sometimes not. Don't know..
But jamfHelper did the job for me! Does exactly what I needed. Entered it this way:
/Library/Application Support/JAMF/bin/jamfhelper.app/Contents/MacOS/jamfHelper -windowType hud -title "FileVault2 - Done" -description "FileVault2 has been activated." -timeout 5
Thank you both very much!