こんにちは、私は関西でサーバーエンジニアをしている者です!
普段は「インフラ技術部」にてLinux関連の情報を中心にブログを書いています。
本題に戻りますが、サーバーエンジニアにとって、SSHは使用頻度の高いツールの一つではないでしょうか?
しかし、ログインした際に表示されるターミナル画面は、非常に味気なく寂しいものです..
また、複数のサーバーに同時にログインし作業をしていると、誤って別のホストでコマンドを実行してしまう…なんて経験をされた方も多いのではないでしょうか?
今回は SSHログイン時にサーバー情報を表示するウェルカムスクリプトを作成してみました!
1.表示項目
今回、ウェルカムスクリプトでログイン時に表示する情報は以下の4つとしました。
項目 | コマンド |
---|---|
ユーザーネーム | whoami |
ホスト名 | hostnameまたはuname -n |
OS | grep PRETTY_NAME /etc/os-release |
カーネルのバージョン | uname -r |
2. 出力のデザイン
ログイン時の出力は以下のようにしました。
アスキーアートは自力ではできなかったので「カルシファー」をモチーフに、AI(ChatGPT)に生成してもらいました。
ただし有料版のChatGPTでもアスキーアートの生成は苦手なようで苦労しました。
Welcome to the system!!
▄▄███▄▄ ┌───────────────┬─────────────────────────────────────────┐
▄█▀▀░░░▀▀█▄ │ OS │ Rocky Linux 9.1 │
█▀▄░█░░█░▄▀█ ├───────────────┼─────────────────────────────────────────┤
█░░▀▀░▀▀░░█ │ Hostname │ ******** │
▀▄░░░░░░▄▀ ├───────────────┼─────────────────────────────────────────┤
▀█▄█▄▀ │ User │ **** │
▄█▀░░▀█▄ ├───────────────┼─────────────────────────────────────────┤
█░░░░░░░█ │ Kernel │ *******************.x86_64 │
▀▀▀▀▀▀▀ └───────────────┴─────────────────────────────────────────┘
3.OSごとの色分け
さらにOSごとにに色を変える条件を取り入れました。
これにより複数のサーバーを扱う場合でも視覚的にに環境を識別できるようにしました。
OS | 色 | ANSIコード |
---|---|---|
Rocky Linux | 緑 | \033[32m |
Red Hat | 赤 | \033[31m |
Ubuntu | オレンジ | \033[33m |
CentOS | 紫 | \033[35m |
その他(デフォルト) | 白 | \033[37m |
4.スクリプト全体
以下完成したスクリプトです。
#!/bin/bash
USERNAME=$(whoami)
HOSTNAME=$(hostname)
PRETTY_NAME=$(grep PRETTY_NAME /etc/os-release | cut -d= -f2 | tr -d '"')
KERNEL_VERSION=$(uname -r)
set_color() {
case "$PRETTY_NAME" in
*"Rocky Linux"*)
printf "\033[32m"
;;
*"Red Hat"*)
printf "\033[31m"
;;
*"Ubuntu"*)
printf "\033[33m"
;;
*"CentOS"*)
printf "\033[35m"
;;
*)
printf "\033[37m"
;;
esac
}
set_color
printf " Welcome to the system!!\n"
printf " ▄▄███▄▄ ┌───────────────┬─────────────────────────────────────────┐\n"
printf " ▄█▀▀░░░▀▀█▄ │ %-13s │%-41s│\n" "OS" "$PRETTY_NAME"
printf " █▀▄░█░░█░▄▀█ ├───────────────┼─────────────────────────────────────────┤\n"
printf " █░░▀▀░▀▀░░█ │ %-13s │%-41s│\n" "Hostname" "$HOSTNAME"
printf " ▀▄░░░░░░▄▀ ├───────────────┼─────────────────────────────────────────┤\n"
printf " ▀█▄█▄▀ │ %-13s │%-41s│\n" "User" "$USERNAME"
printf " ▄█▀░░▀█▄ ├───────────────┼─────────────────────────────────────────┤\n"
printf " █░░░░░░░█ │ %-13s │%-41s│\n" "Kernel" "$KERNEL_VERSION"
printf " ▀▀▀▀▀▀▀ └───────────────┴─────────────────────────────────────────┘\n"
printf "\n"
printf "\033[0m"
4.設定
今回は「.bashrc」に記述し設定します。
「$PS1」が設定され、かつスクリプトが存在する場合に実行するように設定しました。
if [ -n "$PS1" ] && [ -f ~/スクリプト ]; then
~/スクリプト
fi
5.まとめ&今後の改善点
いかがでしたでしょうか?
今回のスクリプトは複数サーバーを扱う際に、非常に役立つと感じました!!
また、ログインのたびにアスキーアートが目に入るので、普段の味気ないターミナル作業が少しだけ楽しくなった?と感じています!
課題として、ターミナルの幅が小さい時に表示が崩れる場合がありますので、今後修正できるように勉強します!!