2021.10.11
Apple Configurator2 付属のコマンドラインツール cfgutil の使い方
Apple Configurator2 は基本的にGUIとしてマウスやトラックパッドを使って操作します。(参考 : Apple Configurator2 とは)
ですが、Apple Configurator2 には日々のオペレーションを自動化するためのコマンドラインツール cfgutil が付属しています。macOS のターミナルを使っている管理部門の方や開発者の方は、cfgutil で運用負荷をかなり省力化できますので積極的に使ってみると良いでしょう。
本稿では cfgutil のインストール方法と機能概要、一部の使い方をご紹介します。
cfgutil のインストール方法
cfgutil は Apple Configurator2 がインストール済みであることが前提です。まだインストールしていない場合は、まず Mac App Store から Apple Configurator2 をインストールしてください。
Apple Configurator2 を起動し、メニューから [Apple Configurator2]→[自動化ツールをインストール] をクリックします。
確認ダイアログが現れますので [インストール] をクリックします。
macOSのパスワードが求められますので入力し、ヘルパーを追加をクリックします。
以上の操作でインストールは完了です。ターミナルを起動して cfgutil をそのまま実行するとヘルプが表示されます。
cfgutil でできること
cfgutil では Mac にUSB接続している端末のうち「どの端末に何をするのか(コマンド)」を指定して実行します。以下に幾つかコマンド実行の例をあげてみます。($はプロンプト)
InHouseアプリをインストールする
$ cfgutil -e [端末ECID] insall-app /path/to/inhouse.ipa
プロビジョニングプロファイルや構成プロファイルをインストールする
$ cfgutil -e [端末ECID] install-profile /path/to/profile.mobileconfig
アプリ内にドキュメントをインストールする
$ cfgutil -e [端末ECID] install-doc [AppBundleID] /path/to/document.file
例を見ると分かりますが、コマンドをどの端末に発行するかは、端末のECIDで示します。ECIDは下図のように Apple Configurator2 のGUI上でも確認できますが、
せっかく cfgutil を使っていますので、コマンドから確認しましょう。以下のようにしてECIDを取得します。(マスクの為に表記をxとしています)
macにUSB接続している端末の情報を一覧する
$ cfgutil list Type: iPhone9,1 ECID: 0xXXXXXXXXXXXXXX UDID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Location: 0x40110000 Name: iPhone
USB接続された全端末の情報を一度に取得できます。ここで得たECIDを各コマンドで -e オプションに渡すことになります。
なお、個別にECIDを指定するのが面倒な場合、以下のように -f オプションを使ってMacにUSB接続されている全端末に同じコマンドを実行することもできます。
全端末にInHouseアプリをインストールする
$ cfgutil -f install-app /path/to/inhouse.ipa
-f オプションはほぼ全てのコマンドで使用することができます。
また、端末をUSBで繋いだり外したりした時に特定のスクリプトを実行する…なんてこともできます。
USB接続/切断時に任意スクリプトを実行する
$ cfgutil exec -a /path/to/script.sh $ cfgutil exec -d /path/to/script.sh
前者は接続時、後者は接続を外した時にスクリプト script.sh を自動実行してくれます。接続時スクリプト内で cfgutil を -f オプション付きでコマンド列挙すれば、端末接続と同時に必要なものを自動インストールするといった使い方もできます。
このように、cfgutil を使うと Apple Configuration2 を使った操作の多くをコマンドラインから実行可能になります。ターミナルからの操作に慣れているなら使わない手はありません。
Apple Configurator2 を使った運用をしていなくても使える cfgutil
アプリの配布やインストールをMDMで行っている場合、cfguitl は使い道がないと感じられるかも知れませんが、実はそんなことはありません。
get という便利なコマンドを使えば、cfgutil を端末調査ツールとして活用できます。
端末の情報を取得する
$ cfgutil -e [端末ECID] get [取得したい設定値]
OSのバージョンやUDID、インストール済みのアプリやプロビジョニングプロファイル名など、端末の各種情報がコマンド一発で取得できます。取得したい設定値が特に定まっていない場合は all を指定すれば全部でてきます。
$ cfgutil -e [端末ECID] get all
「取得したい設定値」に指定できるキー名を調べるには、supportedPropertyNames オプションを使います。
$ cfgutil -e [端末ECID] get supportedPropertyNames ( acceptsSupervision, activationState, appDiskUsage, ...(略)...
約60個もの設定値名称を一覧できますので、見たいものだけ get コマンドのオプションに指定します。複数個並べて同時に取得することもできます。
$ cfgutil -e [端末ECID] get UDID ECID
もちろん上述の -f オプションと併用もできて、全端末のUDIDを一度に取得することができます
$ cfgutil -f get UDID iPhone (ECID: 0xXXXXXXXXXXXXXX): xxxxxxxx-xxxxxxxxxxxxxxxx iPad (ECID: 0xXXXXXXXXXXXXXX): xxxxxxxx-xxxxxxxxxxxxxxxx
cfgutil の get コマンドを使えば、設定アプリを見たりMDMの画面を見なくても簡単に確認できますので、現場によっては便利に活用できます。(ただしDEP端末では以下手法では不可)
以上、Apple Configurator2での運用オペレーションを自動化するコマンドラインツール cfgutilを紹介しました。紹介したコマンドはほんの一部ですので、詳しくは man cfgutil を参照するなどして、是非活用してみてください。