🌏
Jamf Pro で「Macを探す」の On/Off を取得する拡張属性を書く
はじめに
- Jamf Pro を使って Mac を端末管理している人/組織向けです。
- 「拡張属性」という機能を使って、「Mac を探す」が有効になってるかどうかを Jamf Pro に収集させる方法をご紹介します。
問題点
- Managed Apple アカウントを使ったり、Jamf Pro でプロファイルを配布することで「Mac を探す」を無効化できるが以下のケースで難しい問題があります。
- Sidecar を使いたいときは個別 Apple アカウントでないといけません。
- Jamf を展開する前から既に「Mac を探す」を設定していた場合、プロファイルを配布だけでは Off にならないことがあります。
- プロファイルを配布しても何故か設定を On にできてしまいます(バグ…?)
https://www.jamf.com/jamf-nation/discussions/33621/find-my-mac-config-profile-block-not-working-in-catalina
拡張属性の実装
以下のように実装してみました。
「Mac を探す」が On のときは Enabled
、Off のときは Disabled
が出力されます。
iCloud 未サインインや Managed Apple アカウントのときは空白が出力されるようにしています。
- 表示名
Find My Mac Status
- データタイプ
String
- インベントリ表示
なんでも
- 入力タイプ
Script
#!/bin/sh
# 有効なローカルアカウントを取得(複数見つかる場合は1件目のみ)
USERPATH=`jamf listUsers | grep '<home>/Users' | head -n 1 | sed -r "s/^\t*\<home\>(.*)\<\/home\>$/\1/g"`
FILE="$USERPATH/Library/Preferences/MobileMeAccounts.plist"
ACCOUNT_NUM=`/usr/libexec/PlistBuddy -c 'print :Accounts' ${FILE} | grep "Dict" | wc -l`
if [ $ACCOUNT_NUM = "0" ]; then
echo "<result></result>"
exit 0
fi
CNT=`/usr/libexec/PlistBuddy -c "Print :Accounts:0:Services" ${FILE} | grep "Dict" | wc -l`
CNT=`expr $CNT - 1`
for INDEX in `seq 0 $CNT`
do
NAME=`/usr/libexec/PlistBuddy -c "Print :Accounts:0:Services:${INDEX}:Name" ${FILE}`
if [ $NAME = "FIND_MY_MAC" ]; then
IS_ENABLE=`/usr/libexec/PlistBuddy -c "Print :Accounts:0:Services:${INDEX}:Enabled" ${FILE} 2> /dev/null`
if [ $IS_ENABLE = "true" ]; then
echo "<result>Enabled</result>"
else
echo "<result>Disabled</result>"
fi
exit 0
fi
done
echo "<result></result>"
Discussion