diff --git a/server/motd-info.sh b/server/motd-info.sh index 3bdd3b2..1136634 100644 --- a/server/motd-info.sh +++ b/server/motd-info.sh @@ -4,7 +4,8 @@ set -e MOTD_PATH="/etc/update-motd.d/00-sysinfo" -SCRIPT_CONTENT='#!/bin/bash +cat > "$MOTD_PATH" <<"EOF" +#!/bin/bash RED="\033[0;31m" GREEN="\033[0;32m" @@ -13,41 +14,43 @@ BLUE="\033[1;34m" CYAN="\033[0;36m" RESET="\033[0m" -MEM_STAT=$(free -m | awk '\''/^Mem:/{printf "%.1f/%.1f МБ", $3, $2}'\'') -LOAD_AVG=$(cat /proc/loadavg | awk '\''{print $1 " " $2 " " $3}'\'') +MEM_STAT=$(free -m | awk '/^Mem:/{printf "%.1f/%.1f МБ", $3, $2}') +LOAD_AVG=$(cat /proc/loadavg | awk '{print $1 " " $2 " " $3}') 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}'\'') + CPU_TEMP=$(sensors | grep -iP "Core|temp1" | head -n1 | awk '{print $NF}') elif [[ -r /sys/class/thermal/thermal_zone0/temp ]]; then TEMP_RAW=$(cat /sys/class/thermal/thermal_zone0/temp) CPU_TEMP=$(awk "BEGIN{printf \"%.1f°C\", $TEMP_RAW/1000}") else CPU_TEMP="N/A" fi -DISK_STAT=$(df -h / | awk '\''NR==2{printf "%s/%s (свободно/всего)", $4, $2}'\'') +DISK_STAT=$(df -h / | awk 'NR==2{printf "%s/%s (свободно/всего)", $4, $2}') + AUTHLOG="" if [[ -f /var/log/auth.log ]]; then AUTHLOG="/var/log/auth.log" elif [[ -f /var/log/secure ]]; then AUTHLOG="/var/log/secure" fi + FAILED_IPS="" -FAILED_LIMIT=10 if [[ -n $AUTHLOG ]]; then FAILED_IPS=$(sudo grep "Failed password" "$AUTHLOG" \ - | awk "/from/ {print \$(NF-3)}" \ + | awk '/from/ {print $(NF-3)}' \ | sort | uniq -c | sort -nr \ - | head -n \$FAILED_LIMIT \ - | awk "{printf \"%s: %s\\\\n\", \$2, \$1}") + | head -n 10 \ + | awk '{printf "%s: %s\n", $2, $1}') fi + SUCCESS_IPS="" -SUCCESS_LIMIT=10 if [[ -n $AUTHLOG ]]; then SUCCESS_IPS=$(sudo grep "Accepted password" "$AUTHLOG" \ - | awk "/from/ {print \$(NF-3)}" \ + | awk '/from/ {print $(NF-3)}' \ | sort | uniq -c | sort -nr \ - | head -n \$SUCCESS_LIMIT \ - | awk "{printf \"%s: %s\\\\n\", \$2, \$1}") + | head -n 10 \ + | awk '{printf "%s: %s\n", $2, $1}') fi + echo -e "${BLUE}============ Состояние сервера ============${RESET}" echo -e "${YELLOW}ОЗУ: ${GREEN}${MEM_STAT}${RESET}" echo -e "${YELLOW}Нагрузка: ${GREEN}${LOAD_AVG}${RESET} (1/5/15 мин)" @@ -66,27 +69,12 @@ else echo "Нет успешных входов." fi echo -e "${BLUE}=============================================${RESET}" -' +EOF -echo -echo "===> Установка motd-скрипта..." - -# Требует root, если не root - перезапусти сам себя через sudo -if [[ "$EUID" -ne 0 ]]; then - echo "Требуются root-права. Запускаю через sudo..." - exec sudo bash "$0" "$@" -fi - -# Создаём файл -echo "$SCRIPT_CONTENT" > "$MOTD_PATH" chmod +x "$MOTD_PATH" echo "===> Скрипт MOTD установлен: $MOTD_PATH" - -echo echo "===> Тестовый вывод:" bash "$MOTD_PATH" -echo echo "Если сообщение красиво выводится — всё готово!" -echo echo "При входе по SSH каждый раз вы будете видеть свежий статус." \ No newline at end of file