Skip to main content

Experts, I am new to the Casper and struggling second day with dock util on 10.10.OS. Since that functionality was removed in JAMF casper work around like custom script with dockutil 2.0.2 needs to be enabled.



!/bin/bash



sudo dockutil --remove 'Launchpad' --allhomes
sudo dockutil --remove 'Mail' --allhomes
sudo dockutil --remove 'Contacts' --allhomes
sudo dockutil --remove 'Calendar' --allhomes
sudo dockutil --remove 'Notes' --allhomes
sudo dockutil --remove 'Maps' --allhomes
sudo dockutil --remove 'FaceTime' --allhomes
sudo dockutil --remove 'Photo Booth' --allhomes
sudo dockutil --remove 'iPhoto' --allhomes
sudo dockutil --remove 'Pages' --allhomes
sudo dockutil --remove 'Numbers' --allhomes
sudo dockutil --remove 'Keynote' --allhomes
sudo dockutil --remove 'iBooks' --allhomes
sudo dockutil --add /Applications/Firefox.app --after 'Safari' --allhomes
sudo dockutil --add /Applications/Google Chrome.app --after 'Firefox' --allhomes
sudo dockutil --add /Applications/Final Cut Pro.app --after 'Google Chrome' --allhomes
sudo dockutil --add /Applications/Adobe Photoshop CC 2014/Adobe Photoshop CC 2014.app --after 'Final Cut Pro' --allhomes
sudo dockutil --add /Applications/Cyberduck.app --after 'Adobe Photoshop CC 2014' --allhomes
sudo dockutil --add /Applications/Filezilla.app --after 'Cyberduck' --allhomes
sudo dockutil --add /Applications/Microsoft Office 2011/Microsoft Word.app --before 'iTunes' --allhomes
sudo dockutil --add /Applications/Microsoft Office 2011/Microsoft Excel.app --before 'iTunes' --allhomes
sudo dockutil --add /Applications/Microsoft Office 2011/Microsoft Powerpoint.app --before 'iTunes' --allhomes
sudo dockutil --add /Applications/Microsoft Office 2011/Microsoft Outlook.app --before 'iTunes' --allhomes
sudo dockutil --add /Applications/Skype.app --before 'iTunes'--allhomes
sudo dockutil --remove 'Downloads' --allhomes
sudo dockutil --add '~/Downloads' --view list --display folder --allhomes



script is easy, but I have this:



Script exit code: 1
Script result: sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found
sudo: /usr/sbin/dockutil: command not found



is anyone has something easy that will just work for simple dock items? Thank You



P.S I have tried other scripts as well with no luck. DOCKUTIL 2.0.2 is already installed on testing MAC.

@MST I am new to Casper as well. I just got off the phone with JAMF support. They will be sending me some information over shortly. I have looked at dockutil and feel very overwhelmed.



I have Elementary School Lab with about 21 computers. The Lab Teacher has requested the dock be locked with certain icons. If you find an easy solution please provide an update.



Lee


@MST Here is a workflow to lock down the dock. I am still working on the customization part.



Create JSS Policy
1) JSS > Management Tab > Policies > Create Policy
2) Name Policy: Lock Dock
3) Triggered by Login, Once per computer, Scope Policy to Desired Computers
4) Execution Frequency > Once per Computer or Once per Month
5) Go to "Advanced Tab" in Policy (place command under Files & Processes Section in Run Command):
defaults write /Library/Preferences/com.apple.dock contents-immutable -bool true


Hi,



The dockutil error looks like the binary isn't installed on the target computers. You will need to get dockutil into /usr/sbin before you can run the script to call it.



As a slightly different route, when we want to lock a Dock with a certain set of apps, we normally use a custom configuration profile. The basic steps are:




  1. In a temporary user account, configure the Dock how you want

  2. Copy the dock preference file to the desktop with cp /Users/nameoftempaccount/Library/Preferences/com.apple.dock.plist /Users/nameoftempaccount/Desktop

  3. Convert the file to xml with plutil -convert xml1 /Users/nameoftempaccount/Desktop/com.apple.dock.plist

  4. Use mcxToProfile to create a custom profile with /path/to/mcxToProfile.py --plist /Users/nameoftempaccount/Desktop/com.apple.dock.plist --identifier Dock

  5. Upload the .mobileconfig file into the JSS and scope to devices


@MST The problem you are running into is that dockutil is not installed on that machine. Or at least it is not in the location that you are telling Casper it is at:



Script exit code: 1 Script result: sudo: /usr/sbin/dockutil: command not found


You need to make sure that a) dockutil is installed on the machine, and b) your script has the proper path.



The first is remedied by installing dockutil on those machines that need it. You can do this by getting the latest copy of dockutil (available here), and then using Composer or Packages or your favorite packaging method, to package up dockutil so that it installs into the location of your choice. Once packaged, create a policy that then installs dockutil on all of your machines.



Once you've remedied the installation of dockutil, then you can update your script to indicate the location of dockutil. Or, you could install dockutil right into the /usr/sbin/ folder on your machines so that you do not have to edit your script at all.



Hope that helps you out some.


The script can't find dockutil.



A safer way to write your script is instead of...



dockutil --remove 'Downloads' --allhomes


Use this...



/usr/sbin/dockutil --remove 'Downloads' --allhomes


Or whatever the path is to where you're installing the dockutil binary.



Also, you shouldn't need 'sudo' in your script. Scripts are run with root privileges when executed by Casper (during imaging, a policy, a remote push, etc). So the 'sudo' is redundant.


Just an FYI



you should install dockutil into /usr/local/sbin



sbin generally requires super user privs
bin any user can run



/usr/sbin and /usr/bin are reserved for the operating system binaries



3rd party binaries should be installed in /usr/local/sbin or /usr/local/bin



El Capitan will make this more of an issue as with SIP enabled by default you can not modify the contents of /usr/sbin or /usr/bin


whow Guys - you rock! You are a way better than JAMF support. 🙂 I have to customize a dock for around 300 laptops. I will get back to you shortly. Honestly, I am surprised by help offered on this forum. THANK YOU SO MUCH all of You Gentlemen. -Adam


@MST one thing to remember is that dockutil is a third party piece of software. So JAMF support not being able to assist with that is understandable. If the issue you were having were specifically something to do with a part of the Casper Suite, then they would definitely be able to help.


Hi davidacland,



actually, the last line



Use mcxToProfile to create a custom profile with /path/to/mcxToProfile.py --plist /Users/nameoftempaccount/Desktop/com.apple.dock.plist --identifier Dock



says: syntax error near unexpected token :'newline' line 4 .....


Hi @MST, that sounds like an error in the python script.



might be worth re-downloading it from Github in case its corrupted.



The only options you need with the command are --plist and --Identifier


Hi MST,



I'm not sure if you are trying to make a dock that can then be edited by your users, or one that is static (ie for a lab machine), if it is the later I found http://errorfreeit.com.au/blog/2015/4/28/dock-master was really really helpful! I think it is mentioned in another discussion.


Hello Experts,



Thank You davidacland for your help;however, the idea with mcxToProfile.py did not work giving me some errors. I will be back to it when I slow downs with projects. For now what works for me is:



!/bin/sh



LoggedInUser=$3
LoggedInUserHome="/Users/$3"



checkSetupDone() {



if [ -f $LoggedInUserHome/Library/Preferences/com.company.docksetup.plist ] ; then
echo "Dock has been created already for this user, skipping..."
exit 0
fi



}



configureDefaultDock() {



plist=$LoggedInUserHome/Library/Preferences/com.apple.dock.plist



echo "Logged in user is $LoggedInUser"
echo "Logged in user's home $LoggedInUserHome"



if [ -e /usr/local/bin/dockutil ] ; then
dockutilVersion=/usr/local/bin/dockutil --version
echo "dockutil version: $dockutilVersion"
echo "Clearing Dock..."



DOCKUTIL=/usr/local/bin/dockutil



#sudo $DOCKUTIL --remove all --no-restart $LoggedInUserHome
sudo $DOCKUTIL --remove all --no-restart $plist



echo "Removing Maps..."
$DOCKUTIL --remove '/Applications/Maps.app' --no-restart $LoggedInUserHome
echo "Removing Photos..."
$DOCKUTIL --remove '/Applications/Photos.app' --no-restart $LoggedInUserHome
echo "Removing Maps..."
$DOCKUTIL --remove '/Applications/iBooks.app' --no-restart $LoggedInUserHome
echo "Remove Safari..."
$DOCKUTIL --remove '/Applications/Safari.app' --no-restart $LoggedInUserHome



echo "Adding NEWA..."
$DOCKUTIL --add '/Applications/NWEA Lockdown Browser.app' --no-restart $LoggedInUserHome
echo "Adding Chrome..."
$DOCKUTIL --add '/Applications/Google Chrome.app' --no-restart $LoggedInUserHome
echo "Adding Minecraft Luncher..."
$DOCKUTIL --add '/Applications/MinecraftEDU.app' --no-restart $LoggedInUserHome
echo "Adding Launchpad..."
$DOCKUTIL --add '/Applications/Launchpad.app' --no-restart $LoggedInUserHome



touch $LoggedInUserHome/Library/Preferences/com.company.docksetup.plist



else
echo "dockutil not installed, skipping initial dock setup..."
fi



}
checkSetupDone
configureDefaultDock
exit 0



However, if the user does not exist, that script creates the dock util fine. If the user exists it skips creating the new one. I was trying to play with this script to delete all item in the dock;however, no luck. I am using AD accounts to login, perfectly the script should reset each dock items to default one and create one standard for each AD user (does not matter if previously logged in or no). Please advice how can I reset the dock items. Thank You



I have a policy set up for each login per user with before run script priority.


thanks tim.rees, no the user should not be able to modify the dock


Hi MST,



Here is my full solution for you, that enforces my dock everytime, without fail!




  1. As mentioned, I created my dock profile on http://errorfreeit.com.au/blog/2015/4/28/dock-master and downloaded it to my machine.


  2. I then created a package with Composer (Packages, or packagemaker would also work!) to put the profile on the machine, I have a /Library/schoolname folder for all of our working files. (You can get the installer to install the profile as part of its process, I wanted to use the JSS to run the script, so I could see any errors in the JSS)


  3. I created a policy that installs the package, and runs the following script to install the policy:




#!/bin/sh
/usr/bin/profiles -I -F /location/of/studentdock.mobileconfig
exit 0


There is only 1 negative to this process, if you want to change the dock, you have to create a complete new file on the website, and make a new package, but as the FAQ on the site says. the profile identifier is identical, so when the script is run, it will replace the old one.



In the end, as long as the site never disappears, it has solved my solution!



Tim


Hi Tim,



You mentioned "...and downloaded it to my machine." should I put just anywhere or specific location?



Also I am confused with the part using composer for creating profile. i am using casper composer ....


Hi,



I have figured it out with help of this site:



https://jamfnation.jamfsoftware.com/discussion.html?id=6024



pretty much the same steps and now it works,



Thank YOU very much all of you for a big help. Thanks.


Hi MST,



Thats the article I first used!! 🙂 I'm happy you found it! Sorry about missing that step in the middle!



Really happy to hear it works!



Tim


Experts,



Looks like I have back to the composer of this and redo the dock util with link to chrome to specific web site.



I am trying to recall if I have to put that in the link http://errorfreeit.com.au/blog/2015/4/28/dock-master


@MST



If you're still putting dockutil in /usr/sbin/ it will fail because of SIP in El Capitan.



I moved mine to /Library/Application Support/JAMF/bin


@MST @gskibum You can also use /usr/local/bin, which works great.


Hi,



I have figured it out with help of this site:



https://jamfnation.jamfsoftware.com/discussion.html?id=6024



pretty much the same steps and now it works,



Thank YOU very much all of you for a big help. Thanks.



Can you please share the correct link? This above mentioned link is not working.