# очистить файл, в котором хранится статический текст

cat > /etc/motd <<EOF

EOF



# отключить файл по-умолчанию, либо вообще его удалить

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



# создать файл для генерации сообщения

touch /etc/update-motd.d/50-itr-motd

chmod a+x /etc/update-motd.d/50-itr-motd



# [edit] Надо вставлять руками в файл, через шел не работает

> /etc/update-motd.d/50-itr-motd

#!/bin/sh

#

# === Config vars === #

#

# Text Color (See http://misc.flogisoft.com/bash/tip_colors_and_formatting)

cDef="\e[39m" # Reset

dGr="\e[90m" # Dark Gray

lGr="\e[37m" # Light Gray

lRd="\e[91m" # Light Red

lGrn="\e[92m" # Light Green

lYl="\e[93m" # Light Yellow

lBl="\e[94m" # Light Blue

lMg="\e[95m" # Light Magenta

lCn="\e[96m" # Light Cyan

Wt="\e[97m" # White

Bl="\e[34m" # Blue

Rd="\e[31m" # Red

Orn="\e[38;5;208m" # Orange

lBl1="\e[38;5;81m" # Light Blue 1

lGrn1="\e[38;5;42m" # Light Green 1

#

# Text format

B="\e[1m" # Bold

Blnk="\e[5m" # Blink

tRst="\e[0m" # Reset

#

# Hour of day

HOUR=$(date +"%H")

if [ $HOUR -ge 6 -a $HOUR -le 11 ]; then TIME="${lCn}утро"

elif [ $HOUR -ge 12 -a $HOUR -le 17 ]; then TIME="${Orn}день"

elif [ $HOUR -ge 18 -a $HOUR -le 23 ]; then TIME="${lBl1}вечер"

else TIME="${dGr}ночь"

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

IP=`hostname --all-ip-addresses | sed 's/ /; /g' | sed 's/; $//g'`

HOST=`hostname`

USER=`whoami`

SYSTEM=`cat /etc/os-release | grep "PRETTY_NAME" | sed 's/PRETTY_NAME=//g' | sed 's/["]//g'`

LOAD_AVG=`cat /proc/loadavg | awk '{print $1 " " $2 " " $3}'`

NUM_PROCS=`ps aux | wc -l`



MEM_PRC=`free --mebi | grep Mem | awk '{print 100-int($3 / $2 * 100 + 0.5)}'`

if [ $MEM_PRC -ge 1 -a $MEM_PRC -le 20 ]; then MEM_CLR="${lRd}"

elif [ $MEM_PRC -ge 21 -a $MEM_PRC -le 40 ]; then MEM_CLR="${lYl}"

elif [ $MEM_PRC -ge 41 -a $MEM_PRC -le 70 ]; then MEM_CLR="${lBl1}"

else MEM_CLR="${lGrn1}"

fi

MEM_REL=`free --mebi -h | grep Mem | awk '{print $3 " used / " $2 " total"}'`



SWP_PRC=`free --mebi | grep Swap | awk '{print 100-int($3 / $2 * 100 + 0.5)}'`

if [ $SWP_PRC -ge 1 -a $SWP_PRC -le 20 ]; then SWP_CLR="${lRd}"

elif [ $SWP_PRC -ge 21 -a $SWP_PRC -le 40 ]; then SWP_CLR="${lYl}"

elif [ $SWP_PRC -ge 41 -a $SWP_PRC -le 70 ]; then SWP_CLR="${lBl1}"

else SWP_CLR="${lGrn1}"

fi

SWP_REL=`free --mebi -h | grep Swap | awk '{print $3 " used / " $2 " total"}'`



DISK_PRC=`df -l / | tail -1 | awk '{print $5}' | sed 's/\%//g' | awk '{print 100-$1}'`

if [ $DISK_PRC -ge 0 -a $DISK_PRC -le 7 ]; then DISK_CLR="${Rd}"

elif [ $DISK_PRC -ge 8 -a $DISK_PRC -le 20 ]; then DISK_CLR="${lRd}"

elif [ $DISK_PRC -ge 21 -a $DISK_PRC -le 40 ]; then DISK_CLR="${lYl}"

elif [ $DISK_PRC -ge 41 -a $DISK_PRC -le 70 ]; then DISK_CLR="${lBl1}"

else DISK_CLR="${lGrn1}"

fi

DISK_TOTAL=`df -lh / | tail -1 | awk '{print $2}'`

DISK_USED=`df -lh / | tail -1 | awk '{print $3}'`



#

# === echo text === #

echo ""

echo " ${lGrn1}`date +"%Y.%m.%d(%j) %H:%M:%S"` => ${lGr}уже ${TIME}, ${Wt}${USER}"

echo ""

echo " ${dGr}машина ${Wt}${HOST} ${dGr}(${lGr}${IP}${dGr})${cDef}"

echo " ${dGr}система ${lGr}${SYSTEM} ${dGr}[${lBl1}`users | wc -w` ${lGr}users online${dGr}]"

echo " ${dGr}работает ${Wt}$upDays${lGr}д. ${Wt}$upHours${lGr}ч. ${Wt}$upMins${lGr}м."

echo ""

echo " ${dGr}нагрузка ${lBl1}$LOAD_AVG ${lGr}load average ${dGr}(${Wt}$NUM_PROCS ${lGr}proc running${dGr})"

echo " ${dGr}mem ${MEM_CLR}$MEM_PRC% ${lGr}free ${dGr}(${lGr}$MEM_REL${dGr})"

echo " ${dGr}swp ${SWP_CLR}$SWP_PRC% ${lGr}free ${dGr}(${lGr}$SWP_REL${dGr})"

echo " ${dGr}disk ${lGr}'/' ${DISK_CLR}$DISK_PRC% ${lGr}free ${dGr}(${DISK_CLR}${DISK_USED} used ${lGr}/ ${Wt}${DISK_TOTAL} ${lGr}total${dGr})"

echo ${cDef} ""

#


изменён: 23 октября 2023 г.