目的

・ハードオフとかで安くで落ちてるiMacを情報表示端末にする。

・指定したWEBページをスケジュール表示させる。

概要

平日(月〜金)のみ以下を自動実行する。

・07:30 電源OFF状態から起動
・起動後1回だけ再起動
・Safariで指定URLを全画面表示
・08:30 Safari終了 → 完全シャットダウン

・18:00 電源OFF状態から起動
・起動後1回だけ再起動
・Safariで指定URLを全画面表示
・20:00 Safari終了 → 完全シャットダウン

土日は動作なし。

対象OS:macOS Ventura
自動ログイン:有効
電源常時接続

作業手順

以下、ターミナルで行う。ほぼコピペでOK。

① /usr/local/bin ディレクトリ作成

sudo mkdir -p /usr/local/bin

② kiosk 実行スクリプト作成

sudo nano /usr/local/bin/kiosk.sh

内容

「****」部分は表示したいページのURL

#!/bin/bash

FLAG="/tmp/kiosk_reboot_done"

if [ ! -f "$FLAG" ]; then
  touch "$FLAG"
  sudo shutdown -r now
  exit 0
fi

rm -f "$FLAG"

open -a Safari "https://**********.***/*****/"

sleep 5

osascript -e 'tell application "Safari" to activate'
osascript -e 'tell application "System Events" to keystroke "f" using {control down, command down}'

HOUR=$(date +%H)

if [ "$HOUR" = "07" ]; then
  sleep 3600
else
  sleep 7200
fi

killall Safari
sudo shutdown -h now

保存後:

sudo chmod +x /usr/local/bin/kiosk.sh

③ sudoパスワード省略設定

sudo EDITOR=nano visudo

最下部に追加

ユーザー名 ALL=(ALL) NOPASSWD: /sbin/shutdown

④ ログイン時自動実行設定

nano ~/Library/LaunchAgents/com.tabi.kiosk.plist

内容:

「****」のとこはユーザー名とかにする

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.****.kiosk</string>

    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/kiosk.sh</string>
    </array>

    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

読み込み

「****」部分を上とあわせる

launchctl load ~/Library/LaunchAgents/com.****.kiosk.plist

⑤ 平日電源ON自動登録スクリプト

sudo nano /usr/local/bin/register_power.sh

内容:

#!/bin/bash

pmset schedule cancelall

for i in {1..5}
do
  DAY=$(date -v+"$i"d +"%m/%d/%y")
  sudo pmset schedule wakeorpoweron "$DAY 07:30:00"
  sudo pmset schedule wakeorpoweron "$DAY 18:00:00"
done

保存後:

sudo chmod +x /usr/local/bin/register_power.sh

⑥ 毎週日曜に翌週分登録

「****」部分を上とあわせる

nano ~/Library/LaunchAgents/com.****.powerregister.plist

内容:

「****」部分を上とあわせる

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.****.powerregister</string>

    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/register_power.sh</string>
    </array>

    <key>StartCalendarInterval</key>
    <dict>
        <key>Weekday</key>
        <integer>0</integer>
        <key>Hour</key>
        <integer>23</integer>
        <key>Minute</key>
        <integer>0</integer>
    </dict>
</dict>
</plist>

launchctl load ~/Library/LaunchAgents/com.tabi.powerregister.plist

「****」部分を上とあわせる

launchctl load ~/Library/LaunchAgents/com.tabi.powerregister.plist

動作確認方法

現在の電源予約確認

pmset -g sched

手動テスト

/usr/local/bin/kiosk.sh