インフラエンジニアbacchiのわかったことまとめ

bacchi.me

motdの設定をしてみた

motdってありますよね、Linuxにログインした時に表示されるバナーです。

ログインした時にシステムの状態をさっと見たかったので、↓のように表示されるようにしました。

Last login: Fri Feb 10 21:22:34 2017 from 210.152.241.14 

+ +
Motd Updated       : 2017年  2月 11日 土曜日 13:30:05 JST
Hostname           = kotori
Privte IP Address  = 219.94.249.137
Uptime             = 13:31:55 up 189 days,  1:40,  1 user,  load average: 0.08, 0.10, 0.04
Release            = CentOS release 6.8 (Final)
Kernel             = 2.6.32-642.4.2.el6.i686 i686 i386 GNU/Linux
CPU Usage (Core)   = 1%
Memory Used/Total  = 979/1006MB
Swap Used/Total    = 720/2015MB
Disk(/) Used/Avail = 27G/21G

設定方法

/etc/motd 書き換えスクリプトの準備

まずは、/etc/motdを書き換えるスクリプトを用意します。

% vim /root/bin/update_motd.sh
---
#!/bin/bash
# Description:UpdateMotd for Figlet

FILE_MOTD='/etc/motd'

BIN_DATE='/bin/date'
BIN_FIGLET='/usr/bin/figlet'
BIN_HOSTNAME='/bin/hostname'
BIN_IFCONFIG='/sbin/ifconfig'
BIN_GREP='/bin/grep'
BIN_SED='/bin/sed'
BIN_UPTIME='/usr/bin/uptime'
BIN_CAT='/bin/cat'
BIN_UNAME='/bin/uname'
BIN_FREE='/usr/bin/free'
BIN_HEAD='/usr/bin/head'
BIN_TAIL='/usr/bin/tail'
BIN_DF='/bin/df'
BIN_AWK='/bin/awk'
BIN_BC='/usr/bin/bc'
BIN_PS='/bin/ps'
BIN_CURL='/usr/bin/curl'
BIN_CUT='/bin/cut'

COLOR_LIGHT_GREEN='\033[1;32m'
COLOR_LIGHT_BLUE='\033[1;34m'
COLOR_YELLOW='\033[1;33m'
COLOR_RED='\033[0;31m'
COLOR_WHITE='\033[1;37m'
COLOR_DEFAULT='\033[0m'

echo -e "
${COLOR_LIGHT_GREEN}+ +
${COLOR_WHITE}Motd Updated       : ${COLOR_LIGHT_BLUE}$(${BIN_DATE})
${COLOR_WHITE}Hostname           = ${COLOR_LIGHT_BLUE}$(${BIN_HOSTNAME})
${COLOR_WHITE}Privte IP Address  = ${COLOR_LIGHT_BLUE}$(${BIN_IFCONFIG} eth0 2>/dev/null | ${BIN_GREP} 'inet ' | ${BIN_AWK} {'print $2'} | ${BIN_CUT} -d ':' -f2)
${COLOR_WHITE}Uptime             = ${COLOR_LIGHT_BLUE}$(${BIN_UPTIME} | ${BIN_SED} -e 's/^ //')
${COLOR_WHITE}Release            = ${COLOR_LIGHT_BLUE}$(${BIN_CAT} /etc/redhat-release )
${COLOR_WHITE}Kernel             = ${COLOR_LIGHT_BLUE}$(${BIN_UNAME} -orpi)
${COLOR_WHITE}CPU Usage (Core)   = ${COLOR_LIGHT_BLUE}$(echo $(${BIN_PS} -eo pcpu | ${BIN_AWK} 'NR>1' | ${BIN_AWK} '{tot=tot+$1} END {print tot}') / $(${BIN_CAT} /proc/cpuinfo | ${BIN_GREP} -c processor) | ${BIN_BC} )%
${COLOR_WHITE}Memory Used/Total  = ${COLOR_LIGHT_BLUE}$(${BIN_FREE} -m | ${BIN_HEAD} -n 2 | ${BIN_TAIL} -n 1 | ${BIN_AWK} {'print $3'})/$(${BIN_FREE} -m | ${BIN_HEAD} -n 2 | ${BIN_TAIL} -n 1 | ${BIN_AWK} {'print $2'})MB
${COLOR_WHITE}Swap Used/Total    = ${COLOR_LIGHT_BLUE}$(${BIN_FREE} -m | tail -n 1 | ${BIN_AWK} {'print $3'})/$(${BIN_FREE} -m | ${BIN_TAIL} -n 1 | ${BIN_AWK} {'print $2'})MB
${COLOR_WHITE}Disk(/) Used/Avail = ${COLOR_LIGHT_BLUE}$(${BIN_DF} -h / | tail -n 1 | ${BIN_AWK} {'print $3'})/$(${BIN_DF} -h / | ${BIN_TAIL} -n 1 | ${BIN_AWK} {'print $2'})
${COLOR_DEFAULT}
" > ${FILE_MOTD}
---

% chmod 755 /root/bin/update_motd.sh

Cron 登録

スクリプトの準備ができたら、Cron を登録しましょう。

% crontab -e
---
*/5 * * * * /root/bin/update_motd.sh
---

はい、これでOK!スクリプトを手動実行すると5分待たずに/etc/motdが更新されます。

次回ログイン時にばっちり表示されますよ。

motd って「message of the day」なんですね。知らなかった(´・ω・`)

  • B!