🌏

Jamf Pro で「Macを探す」の On/Off を取得する拡張属性を書く

2021/02/15に公開

はじめに

  • Jamf Pro を使って Mac を端末管理している人/組織向けです。
  • 「拡張属性」という機能を使って、「Mac を探す」が有効になってるかどうかを Jamf Pro に収集させる方法をご紹介します。

問題点

  • Managed Apple アカウントを使ったり、Jamf Pro でプロファイルを配布することで「Mac を探す」を無効化できるが以下のケースで難しい問題があります。

拡張属性の実装

以下のように実装してみました。

「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>"

GitHubで編集を提案

Discussion