サーバログイン時にカッコイイメッセージを表示する(CentOS 7.1編)

  • 43
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

はじめに

Message Of The Day (MOTD)意識してますか?
motdを編集する事で、コンソールアクセスやSSHログイン時にメッセージを表示する事が出来ます。

687474703a2f2f692e696d6775722e636f6d2f534632425279342e706e67.png

固定メッセージを表示しておいても良いですが、motd動的に生成する事で、サーバのステータスや構成情報を表示する事が出来ます。

最近、構築や運用の自動化が進んだ事で、サーバへ直接ログインする機会は減っている人も多いかと思いますが、そんな人こそ、いざという時にログインした時にざっと情報確認が出来る様にmotdをカスタマイズしてみてはどうでしょうか。

Linuxディストリビューションの中には、 update-motd というmotdの動的生成に特化したツールもありますが、今回はそれに頼らない方法で実現したいと思います。

FigletScreenfetch を用いたmotd動的生成方法を紹介

Figletを使ったホスト名とステータス表示

まずは、figlet というコマンドを活用したmotd生成の紹介です。
figletは文字列をアスキーアートで表示してくれるツールです。
自分は、強調したいホスト名等の重要情報を表示する時に、キャラクターベースの世界で差異を付けるために使っています。

  • 利用例

    # /usr/bin/figlet $(hostname)
     _____ _       _      _  _____         _   ____
    |  ___(_) __ _| | ___| ||_   _|__  ___| |_/ ___|  ___ _ ____   _____ _ __
    | |_  | |/ _` | |/ _ \ __|| |/ _ \/ __| __\___ \ / _ \ '__\ \ / / _ \ '__|
    |  _| | | (_| | |  __/ |_ | |  __/\__ \ |_ ___) |  __/ |   \ V /  __/ |
    |_|   |_|\__, |_|\___|\__||_|\___||___/\__|____/ \___|_|    \_/ \___|_|
             |___/
    

CentOS 7.1の場合

  • 完成図 figlet_CentOS_login.png

figletコマンドをEPELリポジトリからインストール

# /usr/bin/yum --enablerepo=epel -y install figlet
epel レポジトリが未設定の場合は下記を実行してから上記を実施する
# /bin/rpm --import http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL
# /bin/rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/7/$(/bin/uname -m)/e/epel-release-7-5.noarch.rpm
# /bin/sed -i.org -e "s/enabled.*=.*1/enabled=0/g" /etc/yum.repos.d/epel.repo 

motd動的生成スクリプトをgistから取得し、実行権限を付与

# /usr/bin/wget --no-check-certificate -P /usr/local/bin/ 'https://gist.githubusercontent.com/ysaotome/5997652/raw/update_motd_for_figlet.sh'
# /bin/chmod 755 /usr/local/bin/update_motd_for_figlet.sh

試しに1回実行した上で、実行結果を確認

# /usr/local/bin/update_motd_for_figlet.sh
# cat /etc/motd
                 ______ _         __       __  ______             __  _____
                / ____/(_)____ _ / /___   / /_/_  __/___   _____ / /_/ ___/ ___   _____ _   __ ___   _____
               / /_   / // __ `// // _ \ / __/ / /  / _ \ / ___// __/\__ \ / _ \ / ___/| | / // _ \ / ___/
              / __/  / // /_/ // //  __// /_  / /  /  __/(__  )/ /_ ___/ //  __// /    | |/ //  __// /
             /_/    /_/ \__, //_/ \___/ \__/ /_/   \___//____/ \__//____/ \___//_/     |___/ \___//_/
                       /____/
Motd Updated          : 2015920日 日曜日 18:24:24 JST
Hostname              = FigletTestServer
Global IP Address     =
Privte IP Address     =
Uptime                = 18:24:24 up 37 min,  2 users,  load average: 0.00, 0.01, 0.08
Release               = 
Kernel                = 3.10.0-123.el7.x86_64 x86_64 x86_64 GNU/Linux
CPU Usage (Core)      = 0%
Memory  Used/Total    = 126/490MB
Swap    Used/Total    = 1/2099MB
Disk(/) Used/Total    = 1.2G/28G

5分に一度内容を動的生成する様に設定

# /bin/cat << _UPDATEMOTD_ > /etc/cron.d/update-motd
#update-moted
*/5 * * * * root /usr/local/bin/update_motd_for_figlet.sh
_UPDATEMOTD_

以上完了!
次回ログイン時から反映されます。

Screenfetchを使ったホストロゴとステータス表示

CentOS 7.1の場合

  • 完成図
    Screenfetch_CentOS_login.png

screenfetchコマンドの最新版をgithubから取得し、実行権限を付与

# /usr/bin/wget --no-check-certificate -O /usr/local/bin/screenfetch https://raw.githubusercontent.com/KittyKatt/screenFetch/master/screenfetch-dev
# /bin/chmod 755 /usr/local/bin/screenfetch

motd動的生成スクリプトをgistから取得し、実行権限を付与

# /usr/bin/wget --no-check-certificate -P /usr/local/bin/ 'https://gist.github.com/ysaotome/5997652/raw/fecdf757b348debfcdd866df00f6d567ff749623/update_motd_by_screenfetch.sh'
# /bin/chmod 755 /usr/local/bin/update_motd_by_screenfetch.sh

試しに1回実行した上で、実行結果を確認

# /usr/local/bin/update_motd_by_screenfetch.sh
# cat /etc/motd

                   ..                    root@localhost.localdomain
                 .PLTJ.                  OS: CentOS
                <><><><>                 Kernel: x86_64 Linux 3.10.0-123.el7.x86_64
       KKSSV' 4KKK LJ KKKL.'VSSKK        Uptime: 52m
       KKV' 4KKKKK LJ KKKKAL 'VKK        Packages: 603
       V' ' 'VKKKK LJ KKKKV' ' 'V        Shell: update_motd_by_screenfetch.sh
       .4MA.' 'VKK LJ KKV' '.4Mb.        CPU: Intel Xeon CPU E5-2690 v2 @ 2.993GHz
     . KKKKKA.' 'V LJ V' '.4KKKKK .      RAM: 199MiB / 490MiB
   .4D KKKKKKKA.'' LJ ''.4KKKKKKK FA.
  <QDD ++++++++++++  ++++++++++++ GFD>
   'VD KKKKKKKK'.. LJ ..'KKKKKKKK FV
     ' VKKKKK'. .4 LJ K. .'KKKKKV '
        'VK'. .4KK LJ KKA. .'KV'
       A. . .4KKKK LJ KKKKA. . .4
       KKA. 'KKKKK LJ KKKKK' .4KK
       KKSSA. VKKK LJ KKKV .4SSKK
                <><><><>
                 'MKKM'
                   ''

5分に一度内容を動的生成する様に設定

# /bin/cat << _UPDATEMOTD_ > /etc/cron.d/update-motd
#update-moted
*/5 * * * * root /usr/local/bin/update_motd_by_screenfetch.sh
_UPDATEMOTD_

以上完了!
次回ログイン時から反映されます。

余談

もちろん別のディストリビューションでも同様に実現できます。

  • Ubuntu 14.04
    Screenfetch_Ubuntu_login.png