Automatically download software update over a specific network
Solution 1:
here is a working script, you just need customise it by changing the target_network value, which is the network you wish it to Enable AutoUpdates. And for all other wifi networks it will disable updates.
#/bin/bash
# Get WiFi network name
wifi_network=`/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -I | grep '\sSSID:' | sed 's/.*: //'`
# Set the name of the target network where you
# want it to ENABLE Automatic Downloads
#
target_network='MyHome_Network'
echo "Currently Connected to: $wifi_network wifi network"
if [ "$wifi_network" == "$target_network" ] ;
then `sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticDownload -bool TRUE`
echo "Download updates ENABLED";
else
`sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticDownload -bool FALSE`
echo "Download updates DISABLED";
fi
You have to put it to run on cron as root, or create a launchctl system service daemon (it is just a .plist XML file) to schedule it to run at some time interval.
For testing, you can read the current system updating settings with this command:
sudo defaults read /Library/Preferences/com.apple.SoftwareUpdate
Run the script, read the settings, you will see it changes.
Complement:
here is a good tutorial to create a launchd daemon [with a XML example file included on the tutorial] to run a bash script as job in time intervals, I am adding it here because it fits perfectly as a complement to my answer, and will explain step by step how you can put the script above that I created, as a launchd daemon.
https://alvinalexander.com/mac-os-x/mac-osx-startup-crontab-launchd-jobs