0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SSHした際に可愛いキャラに出迎えられたい!!

Posted at

こんにちは、私は関西でサーバーエンジニアをしている者です!

普段は「インフラ技術部」にて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.まとめ&今後の改善点

いかがでしたでしょうか?

今回のスクリプトは複数サーバーを扱う際に、非常に役立つと感じました!!

また、ログインのたびにアスキーアートが目に入るので、普段の味気ないターミナル作業が少しだけ楽しくなった?と感じています!

課題として、ターミナルの幅が小さい時に表示が崩れる場合がありますので、今後修正できるように勉強します!!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?