Вики IT-KB

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

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

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


No renderer 'pdf' found for mode 'pdf'
unix-linux:debian:stretch:configuring-dynamic-motd-in-debian-linux-9-stretch

Настраиваем динамический motd в Debian GNU/Linux 9 (Stretch)

После регистрации пользователя в Linux-системе, как правило, отображается так называемое «сообщение дня» - message of the day или сокращённо motd.

В Debian GNU/Linux 9 (Stretch) это сообщение имеет малоинформативный вид.

Попробуем сделать это сообщение информативней и полезней для администратора. Скрипт, которые будут использоваться для генерации динамического motd будем размещать в каталоге /etc/update-motd.d, который существует в конфигурации по умолчанию в Debian Stretch.

Создадим в этом каталоге файл скрипта и сделаем его исполняемым:

# touch /etc/update-motd.d/99-mymotd-generator
# chmod a+x /etc/update-motd.d/99-mymotd-generator

Отключим содержащийся по умолчанию в этом каталоге скрипт 10-uname, сняв с него признак исполняемого

# chmod a-x /etc/update-motd.d/10-uname

Отредактируем наш скрипт:

# nano /etc/update-motd.d/99-mymotd-generator

Наполним файл скрипта содержимым «по вкусу». Мой пример будет выглядеть следующим образом:

99-mymotd-generator
#!/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`
#
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 $(lsb_release -s -d)"
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 ""
#

Сохраним скрипт, удалим статический motd-файл и вместо него создадим символическую ссылку на файл /var/run/motd, который будет обновляться при каждом входе в систему нами скриптом.

# rm -f /etc/motd
# ln -sf /var/run/motd /etc/motd

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

Если всё сделано, а результата нет, то возможно стоит проверить настройки PAM.

За вызов механизма обновления motd при входе в систему отвечают настройки в файлах политик PAM. Например в файле nano /etc/pam.d/sshd за это отвечают 2 строчки вызова библиотеки pam_motd.so

sshd
...
session    optional     pam_motd.so  motd=/run/motd.dynamic
session    optional     pam_motd.so noupdate
...

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


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

Версия ОС
Debian GNU/Linux Stretch 9.2.1

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

Обсуждение

ДмитрийДмитрий, 19.10.2019 13:56
Спасибо за скрипт! Очень пригодилось.
sidsid, 10.11.2019 01:21
скажите а как добавить инфу о сетевом трафике вх и исх?



наподобии тот что ниже, но как его вставить в ваш motd...?



#!/bin/bash



# 20-network - generate the network information







function human_readable {



VALUE=$1



BIGGIFIERS=( B Kb Mb Gb )



CURRENT_BIGGIFIER=0



while [ $VALUE -gt 10000 ] ;do



VALUE=$(($VALUE/1000))



CURRENT_BIGGIFIER=$((CURRENT_BIGGIFIER+1))



done



#echo "value: $VALUE"



#echo "biggifier: ${BIGGIFIERS[$CURRENT_BIGGIFIER]}"



echo "$VALUE${BIGGIFIERS[$CURRENT_BIGGIFIER]}"



}







system_ip=`ifconfig | awk -F':' '/inet addr/&&!/127.0.0.1/{split($2,_," ");print _[1]}'`



nic_in=`grep eth0 /proc/net/dev | awk '{print $2}'`



nic_out=`grep eth0 /proc/net/dev | awk '{print $10}'`







echo



echo "Network information:"



printf "System IP:\t%s\n" $system_ip



printf "Traffic in:\t%s\tTraffic out:\t%s" `human_readable $nic_in` `human_readable $nic_out`



echo



echo
Ваш комментарий:
 
unix-linux/debian/stretch/configuring-dynamic-motd-in-debian-linux-9-stretch.txt · Последнее изменение: 13.08.2018 11:30 — Алексей Максимов

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki