概要
サーバにターミナル経由でログインした際に表示されるメッセージ、motd(Message of the Day)。
「特定の日時・曜日をを判別して、その条件を満たしたときにメッセージを表示することはできないか?」
ということでシェルスクリプトを書いてみました。
動作を確認した環境
- Ubuntu 20.04
スクリプト内容
- /etc/update-motd.d/02-Friday_Check(または既存のupdate-motdに追記します)
※管理者権限で追記する必要があります。
#!/bin/bash
# 現在の言語ロケールを保存します。
original_locale=$(locale | grep "LANG=" | cut -d= -f2)
# ロケールを英語に修正します。
export LANG="en_US.UTF-8"
# ロサンゼルス(カリフォルニア)の曜日を調べます。
day_of_week=$(TZ="America/Los_Angeles" date +"%A")
# 金曜日だった場合のみメッセージを表示します。
if [ "$day_of_week" == "Friday" ]; then
echo "Today is Friday in California."
fi
# 元の言語ロケールに戻します。
export LANG="$original_locale"
追記後、
sudo chmod +x /etc/update-motd.d/02-Friday_Check
として、実行権限を付与してください。(既存スクリプトに追記する場合はその限りではありません)
スクリプトの動き
サーバにログインした際に
- 現在の言語ロケールを保存します。
- 言語ロケールを英語に修正します。(曜日の変数をFridayに固定しているため)
- タイムゾーンをチェックして、カリフォルニアで金曜日かどうかを判別します。
- PST(太平洋標準時)/PDT(太平洋夏時間)で金曜日の時間帯に
- Today is Friday in California. を表示します。
- 最後に、保存された言語ロケールへと戻します。
まとめ
今回は単に文字列を判別するだけ。ですが、月末時の処理や保守更新などの応用が利きそうです。