はじめに
Message Of The Day (MOTD)意識してますか?
motdを編集する事で、コンソールアクセスやSSHログイン時にメッセージを表示する事が出来ます。
固定メッセージを表示しておいても良いですが、motd動的に生成する事で、サーバのステータスや構成情報を表示する事が出来ます。
最近、構築や運用の自動化が進んだ事で、サーバへ直接ログインする機会は減っている人も多いかと思いますが、そんな人こそ、いざという時にログインした時にざっと情報確認が出来る様にmotdをカスタマイズしてみてはどうでしょうか。
Linuxディストリビューションの中には、 update-motd
というmotdの動的生成に特化したツールもありますが、今回はそれに頼らない方法で実現したいと思います。
Figlet と Screenfetch を用いたmotd動的生成方法を紹介
Figletを使ったホスト名とステータス表示
まずは、figlet
というコマンドを活用したmotd生成の紹介です。
figletは文字列をアスキーアートで表示してくれるツールです。
自分は、強調したいホスト名等の重要情報を表示する時に、キャラクターベースの世界で差異を付けるために使っています。
-
利用例
# /usr/bin/figlet $(hostname) _____ _ _ _ _____ _ ____ | ___(_) __ _| | ___| ||_ _|__ ___| |_/ ___| ___ _ ____ _____ _ __ | |_ | |/ _` | |/ _ \ __|| |/ _ \/ __| __\___ \ / _ \ '__\ \ / / _ \ '__| | _| | | (_| | | __/ |_ | | __/\__ \ |_ ___) | __/ | \ V / __/ | |_| |_|\__, |_|\___|\__||_|\___||___/\__|____/ \___|_| \_/ \___|_| |___/
CentOS 7.1の場合
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 : 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分に一度内容を動的生成する様に設定
# /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コマンドの最新版を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_
以上完了!
次回ログイン時から反映されます。
余談
もちろん別のディストリビューションでも同様に実現できます。