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


# はじめに

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

![687474703a2f2f692e696d6775722e636f6d2f534632425279342e706e67.png](https://qiita-image-store.s3.amazonaws.com/0/10852/8226457c-9d62-5167-fa80-95de3f5c12cf.png)

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

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

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


# **Figlet** と **Screenfetch** を用いたmotd動的生成方法を紹介

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

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

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

### CentOS 7.1の場合

* 完成図
    ![figlet_CentOS_login.png](https://qiita-image-store.s3.amazonaws.com/0/10852/54e8df17-9908-ff85-48e8-cbcd162f2907.png)


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

```bash
# /usr/bin/yum --enablerepo=epel -y install figlet
```

##### **epel レポジトリが未設定の場合は下記を実行してから上記を実施する**

```bash
# /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から取得し、実行権限を付与

```bash
# /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回実行した上で、実行結果を確認
```bash
# /usr/local/bin/update_motd_for_figlet.sh
# cat /etc/motd
                 ______ _         __       __  ______             __  _____
                / ____/(_)____ _ / /___   / /_/_  __/___   _____ / /_/ ___/ ___   _____ _   __ ___   _____
               / /_   / // __ `// // _ \ / __/ / /  / _ \ / ___// __/\__ \ / _ \ / ___/| | / // _ \ / ___/
              / __/  / // /_/ // //  __// /_  / /  /  __/(__  )/ /_ ___/ //  __// /    | |/ //  __// /
             /_/    /_/ \__, //_/ \___/ \__/ /_/   \___//____/ \__//____/ \___//_/     |___/ \___//_/
                       /____/
Motd Updated          : 2015年  9月 20日 日曜日 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分に一度内容を動的生成する様に設定

```bash
# /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](https://qiita-image-store.s3.amazonaws.com/0/10852/bb300bd7-d535-ad9b-1852-c08e901e4a31.png)

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

```bash
# /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から取得し、実行権限を付与

```bash
# /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回実行した上で、実行結果を確認

```bash
# /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分に一度内容を動的生成する様に設定

```bash
# /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](https://qiita-image-store.s3.amazonaws.com/0/10852/5741c36c-8092-e1de-7d18-6ea3444a6ce5.png)