Rui Qiu's Tech Blog
← Back to all posts

July 12, 2016

SCCM Mac Client Auto Enrollment Script

Since our SCCM server got updated, the old sccm mac client won’t working anymore ( needs to support El Caption), and our certificate expired as well…so basically I have to uninstall the old sccm mac client, and remove the old certificate. and then re-install the new mac sccm client and do the sccm enrollment to generate the certificate again. At this time we already have Casper, so I just use a single shell script to do this task. here is the script:

#!/bin/sh

Download & Extract Installation Files

cd /tmp curl -LOk http://abc.com/downloads/sccm-mac.zip sudo unzip -o sccm-mac.zip

Uninstall current SCCM agent

sudo ./tools/CMUninstall -c

Delete current SCCM certificates

security find-certificate -c “SCCM” -a -Z | sudo awk ‘/SHA-1/{system(“security delete-certificate -Z “$NF)}‘

Install Mac SCCM Client

sudo installer -package /tmp/CMClient.pkg -target /

SCCM Enrollment

/usr/bin/expect << EOF set timeout 60 spawn /tmp/tools/CMEnroll -s abc.com -ignorecertchainvalidation -u domain_name\\username expect “Please enter your password.” send raw_password expect “Successfully enrolled.” EOF

Delete All the temp files

sudo rm -rf tools sudo rm -f sccm-mac.zip sudo rm -f enroll.sh sudo rm -f CMClient.pkg

  A few points:

  1. To use expect script inside a shell script, there are a few ways to do it, I just use this format:

/usr/bin/expect << EOF spawn expect send EOF

  1. Inside the expect script, if you want to do the escape for the domain username, the format should be domain_name\\username
  2. If you want to enable debug mode in expect script, just add -d in the end, such as “/usr/bin/expect -d <<EOF”
  3. wget is not installed by default on Macs, however we can use curl, and to download the zip file, use curl -LOk
  4. To complete unisntall sccm mac client, use -c switch.