Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


unix-linux:centos:configuring-dynamic-motd-in-centos-linux-7-4

Настраиваем динамический motd в CentOS Linux 7.4

После регистрации пользователя в Linux-системе отображается так называемое «сообщение дня» - message of the day или сокращённо motd. Попробуем сделать это сообщение информативней и полезней для администратора. Скрипт, который будет использоваться для генерации динамического motd будем размещать в каталоге /usr/local/sbin/, который существует в конфигурации по умолчанию в CentOS Linux.

Наш скрипт использует утилиту lsb_release, которую можно заполучить, установив пакет redhat-lsb-core:

# yum install -y redhat-lsb-core

Создаём скрипт:

# nano /usr/local/sbin/dynmotd.sh

Наполняем его содержимым:

dynmotd.sh
#!/bin/sh
#
# Text Color Variables http://misc.flogisoft.com/bash/tip_colors_and_formatting
tcLtG="\033[00;37m"    # LIGHT GRAY
tcDkG="\033[01;30m"    # DARK GRAY
tcLtR="\033[01;31m"    # LIGHT RED
tcLtGRN="\033[01;32m"  # LIGHT GREEN
tcLtBL="\033[01;34m"   # LIGHT BLUE
tcLtP="\033[01;35m"    # LIGHT PURPLE
tcLtC="\033[01;36m"    # LIGHT CYAN
tcW="\033[01;37m"      # WHITE
tcRESET="\033[0m"
tcORANGE="\033[38;5;209m"
#
# Time of day
HOUR=$(date +"%H")
if [ $HOUR -lt 12  -a $HOUR -ge 0 ]; then TIME="morning"
elif [ $HOUR -lt 17 -a $HOUR -ge 12 ]; then TIME="afternoon"
else TIME="evening"
fi
#
# System uptime
uptime=`cat /proc/uptime | cut -f1 -d.`
upDays=$((uptime/60/60/24))
upHours=$((uptime/60/60%24))
upMins=$((uptime/60%60))
#
# System + Memory
SYS_LOADS=`cat /proc/loadavg | awk '{print $1}'`
MEMORY_USED=`free -b | grep Mem | awk '{print $3/$2 * 100.0}'`
SWAP_USED=`free -b | grep Swap | awk '{print $3/$2 * 100.0}'`
NUM_PROCS=`ps aux | wc -l`
IPADDRESS=`hostname --all-ip-addresses`
RELEASE=`lsb_release -s -d | sed 's/"//g'`
#
echo -e $tcDkG "==============================================================="
echo -e $tcLtG " Good $TIME !                                   $tcORANGE IT Dept Ltd."
echo -e $tcDkG "==============================================================="
echo -e $tcLtG " - Hostname      :$tcW `hostname -f`"
echo -e $tcLtG " - IP Address    :$tcW $IPADDRESS"
echo -e $tcLtG " - Release       :$tcW $RELEASE"
echo -e $tcLtG " - Kernel        : `uname -a | awk '{print $1" "$3" "$12}'`"
echo -e $tcLtG " - Users         : Currently `users | wc -w` user(s) logged on"
echo -e $tcLtG " - Server Time   : `date`"
echo -e $tcLtG " - System load   : $SYS_LOADS / $NUM_PROCS processes running"
echo -e $tcLtG " - Memory used % : $MEMORY_USED"
echo -e $tcLtG " - Swap used %   : $SWAP_USED"
echo -e $tcLtG " - System uptime : $upDays days $upHours hours $upMins minutes"
echo -e $tcDkG "==============================================================="
echo -e $tcRESET ""
#

Сделаем скрипт исполняемым:

# chmod +x /usr/local/sbin/dynmotd.sh

Отключим встроенную обработку motd для SSH-сессий:

# nano /etc/ssh/sshd_config
...
PrintMotd no
...

Перезапустим службу:

# systemctl restart sshd

Подключаем вызов скрипта в механизм обработки загрузки профиля пользователей, отредактировав основной системный конфигурационный файл profile

# nano /etc/profile

в конец файла добавляем вызов скрипта

profile
...
# Dynamic motd
/usr/local/sbin/dynmotd.sh

Если не нужно, чтобы наш motd-скрипт выполнялся при переходе в окружение root-а по команде sudo, можно изменить вызов скрипта, например, следующим образом:

profile
...
# Dynamic motd
if [ $LOGNAME != "root" ]; then
        /usr/local/sbin/dynmotd.sh
fi

Проверяем результат, выполнив локальный вход систему и удалённый вход через SSH-подключение:


Дополнительные источники информации:


Проверено на следующих конфигурациях:

Версия ОС
CentOS Linux release 7.4.1708 (Core)

Автор первичной редакции:
Алексей Максимов
Время публикации: 18.03.2018 13:27

Обсуждение

Ваш комментарий:
 

unix-linux/centos/configuring-dynamic-motd-in-centos-linux-7-4.txt · Последние изменения: 18.03.2018 14:19 — Алексей Максимов