diff --git a/server/motd-info.sh b/server/motd-info.sh index 3620a85..d3e462a 100644 --- a/server/motd-info.sh +++ b/server/motd-info.sh @@ -1,7 +1,5 @@ #!/bin/bash -# Скрипт установки кастомного sysinfo MOTD со статистикой логинов и ключей - TARGET_PATH="/etc/update-motd.d/zzzzz-motd-sysinfo" cat > "$TARGET_PATH" <<"EOF" @@ -14,9 +12,25 @@ BLUE="\033[1;34m" CYAN="\033[0;36m" RESET="\033[0m" +# ---------------------------- # Системная статистика -MEM_STAT=$(free -m | awk '/^Mem:/{printf "%.1f/%.1f МБ", $3, $2}') -LOAD_AVG=$(awk '{print $1 " " $2 " " $3 " (1мин 5мин 15мин)"}' /proc/loadavg) +# ---------------------------- + +# Память: занято/всего и % +MEM_USED=$(free -m | awk '/^Mem:/{print $3}') +MEM_TOTAL=$(free -m | awk '/^Mem:/{print $2}') +MEM_PERCENT=$(( MEM_USED * 100 / MEM_TOTAL )) +MEM_STAT="${MEM_USED}/${MEM_TOTAL} МБ (${MEM_PERCENT}%)" + +# Нагрузка: считаем как процент относительно количества ядер +CPU_CORES=$(nproc) +read LOAD1 LOAD5 LOAD15 < /proc/loadavg +LOAD1P=$(( $(awk "BEGIN {printf \"%.0f\", $LOAD1/$CPU_CORES*100}") )) +LOAD5P=$(( $(awk "BEGIN {printf \"%.0f\", $LOAD5/$CPU_CORES*100}") )) +LOAD15P=$(( $(awk "BEGIN {printf \"%.0f\", $LOAD15/$CPU_CORES*100}") )) +LOAD_AVG="${LOAD1} ${LOAD5} ${LOAD15} (${LOAD1P}% ${LOAD5P}% ${LOAD15P}% от всех ядер)" + +# CPU температура if command -v sensors &>/dev/null && sensors | grep -iP "Core|temp1" >/dev/null; then CPU_TEMP=$(sensors | grep -iP "Core|temp1" | head -n1 | awk '{print $NF}') elif [[ -r /sys/class/thermal/thermal_zone0/temp ]]; then @@ -25,9 +39,13 @@ elif [[ -r /sys/class/thermal/thermal_zone0/temp ]]; then else CPU_TEMP="N/A" fi + +# Диск DISK_STAT=$(df -h / | awk 'NR==2{printf "%s/%s (свободно/всего)", $4, $2}') -# Локаль для корректного парсинга дат +# ---------------------------- +# Логины за 24 часа +# ---------------------------- DATE_24H_AGO=$(LC_TIME=C date --date="24 hours ago" "+%b %-d") CURRENT_DATE=$(LC_TIME=C date "+%b %-d") HOUR_24H_AGO=$(date --date="24 hours ago" "+%H") @@ -70,6 +88,9 @@ FAILED_IPS=$(echo "$RECENT_LOG" | grep "Failed " | awk '{for(i=1;i