How to remotely install software on Mac by scripts?
I am a windows guy new to Mac, I need to deploy software to lots of Mac.
I do centrally install software by scripts on Windows platform, but I still have no clue how to do it on Mac after having done some research.
Can someone tell me
What are some key components I need for centrally pushing out the software on the Mac?
What language do I need to use for the scripts?
Is there a Mac image create/deploy service available, like WDS on windows?
What you ask is basically the trade of being a Mac administrator and there are three major ways to get this done and one where you let everyone do the work:
- Train your end users to install things
- Use Apple's legacy tools to manage installs (ARD and AppleScript)
- Use
ssh
and tools like homebrew https://brew.sh and shell scripts to install software and entire applications. - Use a modern MDM - the popular open source choice is Munki and the popular vendor supported choice is JAMFpro (which is the new name for the Casper Suite/JSS for the upcoming version 10 release)
You probably have asked this question since you have ruled out options 1 and 2 - but they are realistic and scalable options for organizations in the 10 to 100 client range. Past 100, you're probably going to want some sort of Apple push / MDM / automation framework and using one that's already in service is better than making your own for almost all cases.
Also, be sure to evaluate your end user "self-service" options. Munki has the managed software installer and I'm using JAMF's name for their end user portal for app installs, scripts and management. Even once you have a push framework set up to script things, letting users fix things themselves is the winning move if you want to scale up your support without hiring help desk staff to do everything for your clients.
There are a few apple device management softwares out there, but almost none of them (at least to my knowledge) is free. A very popular choice is JAMF Software.
It is quite sensible to consider scripts to remotely connect to devices and deploy softwares (hopefully those that require minimal user interactions). There are limitations however if you do not have full control over system configurations of the target devices; an end-user may disable remote login or uninstall your softwares etc.
Overall, I think the answer to this question may well depend on the nature of the software(s) to be deployed, technologies you want to use etc.