macOS Tricks#

Operator one-liners for macOS configuration, monitoring, and quality-of-life. Generate passwords, query external IP, drive Spotlight, monitor performance with powermetrics, and tune the firewall, ARD, AirDrop, and TFTP daemon.

Misc#

# Generate secure password, copy to clipboard
$ LC_ALL=C tr -dc "[:alnum:]" < /dev/urandom | head -c 20 | pbcopy

# External IP
$ dig +short myip.opendns.com @resolver1.opendns.com
$ curl -s https://api.ipify.org && echo

# Eject all mountable volumes
$ osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'

# Set login window text
$ sudo defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "Your text"

# Preview via QuickLook
$ qlmanage -p /path/to/file

# Spotlight search
$ mdfind -name 'searchterm'

# Show Spotlight indexed metadata
$ mdls /path/to/file

# Speak text with system voice
$ say 'All your base are belong to us!'

# Prevent sleep for 1 hour
$ caffeinate -u -t 3600

# UUID to clipboard
$ uuidgen | tr -d '\n' | tr '[:upper:]' '[:lower:]' | pbcopy

# Open URL in Chrome
$ open -a "Google Chrome" https://github.com

Performance monitoring#

powermetrics.

$ powermetrics -a 0 -i 15000 -s tasks --show-process-io --show-process-energy -u /tmp/powermetrics.log
# -a 0                  no summary line
# -i 15000              collect every 15 seconds
# -s tasks              per-process
# --show-process-io     disk IO and pageins
# --show-process-energy energy impact scores

Splunk regex for parsing.

index="your_index_here" sourcetype=generic_single_line
| rex field="_raw" "(?P<process_name>^[\w \(\)]\-\.]+)(\b|\)\s{3,}(?P<pid>[\d]+)\s+
    (?P<cpu_ms_s>[\d\.]+)\s+(?P<percent_cpu_user>[\d\.]+)\s+(?P<deadlines_lt_2ms>[\d\.]+)\s+
    (?P<deadlines_2_to_5ms>[\d\.]+)\s+(?P<wakeups>[\d\.]+)\s+(?P<intr_pkg_idle>[\d\.]+)\s+
    (?P<bytes_read>[\d\.]+)\s+(?P<bytes_written>[\d\.]+)\s+(?P<pageins>[\d\.]+)\s+
    (?P<energy_impact>[\d\.]+)"

Configuration#

# Join a Wi-Fi network
$ networksetup -setairportnetwork en0 WIFI_SSID WIFI_PASSWORD

# Wi-Fi on
$ networksetup -setairportpower en0 on

# Firewall
$ sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
$ sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
$ sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off

# Remote Apple Events
$ sudo systemsetup -getremoteappleevents
$ sudo systemsetup -setremoteappleevents on
$ sudo systemsetup -setremoteappleevents off

# AirDrop
$ defaults write com.apple.NetworkBrowser BrowseAllInterfaces -bool true   # over Ethernet, unsupported Macs
$ defaults remove com.apple.NetworkBrowser DisableAirDrop                  # enable (default)
$ defaults write com.apple.NetworkBrowser DisableAirDrop -bool YES         # disable

# Force launch screen saver (up to Sierra)
$ open /System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/ScreenSaverEngine.app
# High Sierra and later
$ /System/Library/CoreServices/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine

# Native TFTP daemon (files from /private/tftpboot)
$ sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist
$ sudo launchctl start com.apple.tftpd

Apple Remote Desktop#

# Activate the ARD Agent and Helper
$ sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart \
    -activate -agent -console

# Deactivate
$ sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart \
    -deactivate -stop

# Allow all users with full privileges
$ sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart \
    -configure -allowAccessFor -allUsers -privs -all

# Disable ARD Agent, remove access privileges
$ sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart \
    -deactivate -configure -access -off

Remove Apple Remote Desktop settings.

$ sudo rm -rf /var/db/RemoteManagement
$ sudo defaults delete /Library/Preferences/com.apple.RemoteDesktop.plist
$ defaults delete ~/Library/Preferences/com.apple.RemoteDesktop.plist
$ sudo rm -r /Library/Application\ Support/Apple\ Remote\ Desktop/
$ rm -r ~/Library/Application\ Support/Remote\ Desktop/
$ rm -r ~/Library/Containers/com.apple.RemoteDesktop

References#