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

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

機能概要

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

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

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

使い方例

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

  2. USBメモリに以下の貼り付けコマンドセット①②③と、アプリインストーラーをappフォルダに保存

  3. コマンドセット①

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

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

      • Wi-Fiパスをクリップボードに保存

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

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

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

  4. コマンドセット②

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

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

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

    2. OSソフトウェアアップデート画面で自動更新の設定

    3. パスワード入力ウィンドウが出るので、3回連続でパスワード貼り付け→ターミナルでパスワード貼り付け(PC名変更&Filevault有効化)

    4. 以下が続けて実行される

      1. softwareupdate -i -aがクリップボードに保存される

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

  1. Downloadsフォルダにコピーされたアプリをインストール

  2. コマンドセット③

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

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

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

      3. softwareupdate -i -aがクリップボードに保存される

    2. softwareupdate -i -aを貼り付けてOSソフトウェアアップデート実行(必要に応じて再起動)

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

  4. 必要に応じて

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

    2. USBに保存されたターミナルのログテキスト(ユーザー名.txt)を削除

コマンドセット①

#変数設定
webhook_url='webhook_url'
wifi_password='Wi-Fiパスワード'
usb_drive_name=’USBメモリ名’
host_name='PC名(ホスト名)を入力'
user_pass='ユーザーパスワードを入力'

open ~/Downloads/
echo "$wifi_password" | tr -d '\n' | pbcopy
perl -e 'print "Wi-Fiパスをクリップボードにコピーしました\n"'
cp “/Volumes/${usb_drive_name}/app/*” “~/Downloads/”

log_path= “/Volumes/$}usb_drive_name}/${LOGNAME}.txt"

script "$log_path"

コマンドセット②

echo "$user_pass" | tr -d '\n' | pbcopy
 
open -a "software update"
scutil --set ComputerName "$host_name"
scutil --set LocalHostName "$host_name"
scutil --set HostName "$host_name"
 
sudo fdesetup enable -user "$LOGNAME"
 
echo "softwareupdate -i -a"  | pbcopy

exit

コマンドセット③

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\s+key\s*=\s*'[^']+'" $log_path | sed "s/Recovery\s*key\s*=\s* '//; s/'//")

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

perl -e 'print "softwareupdate -i -aをクリップボードにコピーしました\n"'


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

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


この記事が気に入ったらサポートをしてみませんか?