JamfなしMacOSキッティングに便利なコードセット

社員にMacPCを配布するけど、予算や、使用台数の関係で、Jamfの導入まではできないときに使える、MacPCのキッティングに便利なコードセット作ってみました。
あくまで手作業と組み合わせて使う、簡単なものです。

  • ※2024/12/11更新

    • ログファイルはダウンロードフォルダに保存

    • PC名変更タイミングをコマンド②→①に変更

    • デスクトップにファイルをコピーする機能を追加など

機能概要

  • キッティングしたいMacのターミナルに貼り付けて実行するコードのテキスト

  • Wi-Fi接続、PC名変更、OSソフトウェアアップデート設定、Filevault有効化行う手順を効率化する

  • シリアル番号、Macアドレス、Filevault回復キーなどをWebhook(GoogleかSlack)でチャットに送付する

使い方例

  1. ローカル管理者権限をつけて、使用者ユーザーのアカウントにログイン

  2. USBメモリに以下を保存

    1. appフォルダ

      1. 貼り付けコマンドセット①②③を含んだテキストファイル

      2. アプリのインストーラー

    2. desktopフォルダ

      1. デスクトップにコピーするファイル

  3. コマンドセット①

    1. テキストエディタで開き、変数を設定

    2. ターミナルに貼り付ける→以下が実行される

      • ユーザーパスワードをクリップボードに保存される

        • →パスワード入力が求められるので、貼り付け

      • PC名変更

      • Wi-Fiパスがクリップボードに保存される

      • ターミナルのログテキストの保存を開始

      • ダウンロードフォルダに、アプリインストーラーをコピー

      • デスクトップにdesktopフォルダ内をコピー

    3. クリップボードにWi-Fiパスがコピーされているので、Wi-Fiに接続(パスワードをペースト)

  4. コマンドセット②

    1. ターミナルに貼り付ける→以下が実行される

      1. ユーザーパスをクリップボードに保存

      2. システム環境設定の、OSソフトウェアアップデートが開く→自動更新を設定

      3. FileVaultの暗号化

        1. ユーザーパスワードを貼り付けて実行

      4. ターミナルのテキストの保存を終了

  5. コマンドセット③

    1. ターミナルに貼り付ける→以下が実行される

      1. 保存されたターミナルのログテキストから、Filevault回復キーを取得

      2. シリアル番号、MacアドレスなどをWebhookでチャットに送付

      3. ユーザーパスをクリップボードに保存

  6. ダウンロードフォルダにコピーされたアプリをインストールする。

  7. ダウンロードフォルダ内のファイルを削除

  8. 必要に応じて

    1. 使用者ユーザーのアカウントを管理者から通常ユーザーに変更

コマンドセット①

#変数設定
wifi_password='Wi-Fiパスワード'
host_name='PC名(ホスト名)を入力'
user_pass='ユーザーパスワードを入力'
usb_drive_name='USBメモリ名※小文字じゃないとエラーになりました'

echo "$user_pass" | tr -d '\n' | pbcopy

sudo scutil --set ComputerName "$host_name"
sudo scutil --set LocalHostName "$host_name"
sudo scutil --set HostName "$host_name"


open ~/Downloads/

echo "$wifi_password" | tr -d '\n' | pbcopy
perl -e 'print "Wi-Fipassをクリップボードにコピーしました\n"'

cp /Volumes/${usb_drive_name}/app/* ~/Downloads/
cp /Volumes/${usb_drive_name}/desktop/* ~/Desktop/
script ~/Downloads/"$LOGNAME"".txt"

コマンドセット②

echo "$user_pass" | tr -d '\n' | pbcopy
open -a "software update"
sudo fdesetup enable -user "$LOGNAME"
exit

コマンドセット③


user_pass='ユーザーパスワードを入力'
webhook_url='webhook_url'

serial_number=$(system_profiler SPHardwareDataType | awk '/Serial/ {print $4}')
pc_name=$(hostname)
model_name=$(system_profiler SPHardwareDataType | awk '/Model Identifier/ {print $3}')
mac_address_eth=$(ifconfig en0 | awk '/ether/ {print $2}')
mac_address_wifi=$(ifconfig en1 | awk '/ether/ {print $2}')
storage_capacity=$(df -h | awk '/\/$/ {print $2}')
memory_capacity=$(system_profiler SPHardwareDataType | awk '/Memory/ {print $2}')
cpu_name=$(sysctl -n machdep.cpu.brand_string)

recovery_key=$(grep -oE "Recovery key = '[^']+" ~/Downloads/"$LOGNAME".txt | sed "s/Recovery key = '//")


message="[${pc_name}]Mac\nシリアル番号: $serial_number\n機種名: $model_name\nMACアドレス(イーサネット): $mac_address_eth\nMACアドレス(Wi-Fi): $mac_address_wifi\nストレージ容量: $storage_capacity\nメモリ容量: $memory_capacity\nCPU名: $cpu_name\nRecovery key:$recovery_key"
curl -X POST -H 'Content-type: application/json' --data "{\"text\": \"$message\"}" "$webhook_url"

echo "$user_pass" | tr -d '\n' | pbcopy


アプリのインストールもコマンドで出来たら便利だろうと思いましたが、予期しない動きをしそうで、そこは手動です。
見つけるまで意外と時間がかかったのは、以下部分でそのままpbcopyをすると、なぜか改行コードが一緒に入りうまく動作しなかったので、改行コードを削除するプロセスを入れています。

echo "$user_pass" | tr -d '\n' | pbcopy


いいなと思ったら応援しよう!