gistfile1.txt
· 3.6 KiB · Text
Raw
```
#!/bin/bash
# /etc/update-motd.d/99-mymotd-generator
# OR
# /etc/profile.d/sysinfo.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
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`
# IP первого сетевого интерфейса
LOCAL_IP=$(ip -4 addr show | grep -oP '(?<=inet\s)\d+\.\d+\.\d+\.\d+' | grep -v '^127\.' | head -n 1)
# Имя сервера
HOSTNAME=$(hostname)
# ОS
OS=$(grep PRETTY_NAME /etc/os-release | cut -d= -f2 | tr -d '"')
# Пользователь
USER_NAME=$(whoami)
[ "$USER_NAME" = "root" ] && USER_NAME="${tcLtR}${USER_NAME}${tcRESET}"
# Load average
LOADAVG=$(awk '{print $1" "$2" "$3}' /proc/loadavg)
SYS_LOADS=`cat /proc/loadavg | awk '{print $1}'`
# RAM: всего и свободно (в мегабайтах)
RAM_TOTAL=$(free -m | awk '/Mem:/ {print $2}')
RAM_FREE=$(free -m | awk '/Mem:/ {print $7}')
RAM_FREE_PCT=$(( RAM_FREE * 100 / RAM_TOTAL ))
# Количество CPU
CPU_COUNT=$(nproc)
# Uptime
UPTIME=$(uptime -p)
# HDD: для корневого раздела /
DISK_TOTAL_HUMAN=$(df -h / | awk 'NR==2 {print $2}')
DISK_FREE_HUMAN=$(df -h / | awk 'NR==2 {print $4}')
# Используем df без форматирования для процентов
DISK_TOTAL=$(df -k / | awk 'NR==2 {print $2}')
DISK_FREE=$(df -k / | awk 'NR==2 {print $4}')
DISK_FREE_PCT=$(( DISK_FREE * 100 / DISK_TOTAL ))
echo -e "$tcDkG ==============================================================="
echo -e $tcLtG " Good $TIME! $tcORANGE $LOCAL_IP"
echo -e $tcDkG "==============================================================="
echo -e $tcLtG " - Hostname :$tcW ${$HOSTNAME}"
echo -e $tcLtG " - IP Address :$tcW ${LOCAL_IP:-N/A}"
echo -e $tcLtG " - User :$tcW ${USER_NAME}"
echo -e $tcLtG "==============================================================="
echo -e $tcLtG " - OS 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 "==============================================================="
echo -e $tcLtG " - Server Time : `date`"
echo -e $tcLtG " - System load : ${SYS_LOADS} / ${NUM_PROCS} processes running"
echo -e $tcLtG " - Load average : ${LOADAVG}"
echo -e $tcLtG " - System uptime : ${upDays} days ${upHours} hours ${upMins} minutes"
echo -e $tcLtG "==============================================================="
echo -e $tcLtG " - CPU : ${CPU_COUNT} CPU"
echo -e $tcLtG " - RAM : ${RAM_TOTAL} MB, ${RAM_FREE} MB (${RAM_FREE_PCT}%) free"
echo -e $tcLtG " - HDD : ${DISK_TOTAL_HUMAN}, ${DISK_FREE_HUMAN} (${DISK_FREE_PCT}%) free"
echo -e $tcLtG " - Swap used % : ${SWAP_USED}"
echo -e $tcDkG "==============================================================="
echo -e $tcRESET ""
```
| 1 | ``` |
| 2 | #!/bin/bash |
| 3 | # /etc/update-motd.d/99-mymotd-generator |
| 4 | # OR |
| 5 | # /etc/profile.d/sysinfo.sh |
| 6 | # |
| 7 | |
| 8 | # Text Color Variables http://misc.flogisoft.com/bash/tip_colors_and_formatting |
| 9 | tcLtG="\033[00;37m" # LIGHT GRAY |
| 10 | tcDkG="\033[01;30m" # DARK GRAY |
| 11 | tcLtR="\033[01;31m" # LIGHT RED |
| 12 | tcLtGRN="\033[01;32m" # LIGHT GREEN |
| 13 | tcLtBL="\033[01;34m" # LIGHT BLUE |
| 14 | tcLtP="\033[01;35m" # LIGHT PURPLE |
| 15 | tcLtC="\033[01;36m" # LIGHT CYAN |
| 16 | tcW="\033[01;37m" # WHITE |
| 17 | tcRESET="\033[0m" |
| 18 | tcORANGE="\033[38;5;209m" |
| 19 | |
| 20 | # Time of day |
| 21 | HOUR=$(date +"%H") |
| 22 | if [ $HOUR -lt 12 -a $HOUR -ge 0 ]; then TIME="morning" |
| 23 | elif [ $HOUR -lt 17 -a $HOUR -ge 12 ]; then TIME="afternoon" |
| 24 | else TIME="evening" |
| 25 | fi |
| 26 | |
| 27 | # System uptime |
| 28 | uptime=`cat /proc/uptime | cut -f1 -d.` |
| 29 | upDays=$((uptime/60/60/24)) |
| 30 | upHours=$((uptime/60/60%24)) |
| 31 | upMins=$((uptime/60%60)) |
| 32 | |
| 33 | # System + Memory |
| 34 | MEMORY_USED=`free -b | grep Mem | awk '{print $3/$2 * 100.0}'` |
| 35 | SWAP_USED=`free -b | grep Swap | awk '{print $3/$2 * 100.0}'` |
| 36 | NUM_PROCS=`ps aux | wc -l` |
| 37 | |
| 38 | # IP первого сетевого интерфейса |
| 39 | LOCAL_IP=$(ip -4 addr show | grep -oP '(?<=inet\s)\d+\.\d+\.\d+\.\d+' | grep -v '^127\.' | head -n 1) |
| 40 | |
| 41 | # Имя сервера |
| 42 | HOSTNAME=$(hostname) |
| 43 | |
| 44 | # ОS |
| 45 | OS=$(grep PRETTY_NAME /etc/os-release | cut -d= -f2 | tr -d '"') |
| 46 | |
| 47 | # Пользователь |
| 48 | USER_NAME=$(whoami) |
| 49 | [ "$USER_NAME" = "root" ] && USER_NAME="${tcLtR}${USER_NAME}${tcRESET}" |
| 50 | |
| 51 | # Load average |
| 52 | LOADAVG=$(awk '{print $1" "$2" "$3}' /proc/loadavg) |
| 53 | SYS_LOADS=`cat /proc/loadavg | awk '{print $1}'` |
| 54 | |
| 55 | # RAM: всего и свободно (в мегабайтах) |
| 56 | RAM_TOTAL=$(free -m | awk '/Mem:/ {print $2}') |
| 57 | RAM_FREE=$(free -m | awk '/Mem:/ {print $7}') |
| 58 | RAM_FREE_PCT=$(( RAM_FREE * 100 / RAM_TOTAL )) |
| 59 | |
| 60 | # Количество CPU |
| 61 | CPU_COUNT=$(nproc) |
| 62 | |
| 63 | # Uptime |
| 64 | UPTIME=$(uptime -p) |
| 65 | |
| 66 | # HDD: для корневого раздела / |
| 67 | DISK_TOTAL_HUMAN=$(df -h / | awk 'NR==2 {print $2}') |
| 68 | DISK_FREE_HUMAN=$(df -h / | awk 'NR==2 {print $4}') |
| 69 | |
| 70 | # Используем df без форматирования для процентов |
| 71 | DISK_TOTAL=$(df -k / | awk 'NR==2 {print $2}') |
| 72 | DISK_FREE=$(df -k / | awk 'NR==2 {print $4}') |
| 73 | DISK_FREE_PCT=$(( DISK_FREE * 100 / DISK_TOTAL )) |
| 74 | |
| 75 | echo -e "$tcDkG ===============================================================" |
| 76 | echo -e $tcLtG " Good $TIME! $tcORANGE $LOCAL_IP" |
| 77 | echo -e $tcDkG "===============================================================" |
| 78 | echo -e $tcLtG " - Hostname :$tcW ${$HOSTNAME}" |
| 79 | echo -e $tcLtG " - IP Address :$tcW ${LOCAL_IP:-N/A}" |
| 80 | echo -e $tcLtG " - User :$tcW ${USER_NAME}" |
| 81 | echo -e $tcLtG "===============================================================" |
| 82 | echo -e $tcLtG " - OS Release :$tcW $(lsb_release -s -d)" |
| 83 | echo -e $tcLtG " - Kernel : `uname -a | awk '{print $1" "$3" "$12}'`" |
| 84 | echo -e $tcLtG " - Users : Currently `users | wc -w` user(s) logged on" |
| 85 | echo -e $tcLtG "===============================================================" |
| 86 | echo -e $tcLtG " - Server Time : `date`" |
| 87 | echo -e $tcLtG " - System load : ${SYS_LOADS} / ${NUM_PROCS} processes running" |
| 88 | echo -e $tcLtG " - Load average : ${LOADAVG}" |
| 89 | echo -e $tcLtG " - System uptime : ${upDays} days ${upHours} hours ${upMins} minutes" |
| 90 | echo -e $tcLtG "===============================================================" |
| 91 | echo -e $tcLtG " - CPU : ${CPU_COUNT} CPU" |
| 92 | echo -e $tcLtG " - RAM : ${RAM_TOTAL} MB, ${RAM_FREE} MB (${RAM_FREE_PCT}%) free" |
| 93 | echo -e $tcLtG " - HDD : ${DISK_TOTAL_HUMAN}, ${DISK_FREE_HUMAN} (${DISK_FREE_PCT}%) free" |
| 94 | echo -e $tcLtG " - Swap used % : ${SWAP_USED}" |
| 95 | echo -e $tcDkG "===============================================================" |
| 96 | echo -e $tcRESET "" |
| 97 | |
| 98 | ``` |