[cmd] change login message.txt

Разделы
    # очистить файл, в котором хранится статический текст
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 г.