1. Script de monitoring (/usr/local/bin/monitoring.sh)


Objectif : Collecter et diffuser un résumé de l’état système (CPU, RAM, disque, réseau, etc.) via wall.

Contenu complet du script :

image.png

image.png


#!/bin/bash

# Architecture
arch=$(uname -a)

# CPU physical
pcpu=$(grep "physical id" /proc/cpuinfo | sort | uniq | wc -l)

# CPU virtual
vcpu=$(grep "^processor" /proc/cpuinfo | sort | uniq | wc -l)

# RAM
ram_total=$(free -m | awk '$1=="Mem:"{print $2}')
ram_use=$(free -m | awk '$1=="Mem:"{print $3}')
ram_percent=$(free -m | awk '$1=="Mem:"{printf("%.2f", $3/$2*100)}')

# DISK
disk_total=$(df -BG | grep '^/dev/' | grep -v '/boot$' | awk '{t+=$2} END{print t}')
 disk_use=$(df -BG | grep '^/dev/' | grep -v '/boot$' | awk '{u+=$3} END{print u}')
disk_percent=$(df -BG | grep '^/dev/' | grep -v '/boot$' \\
  | awk '{u+=$3; t+=$2} END{printf("%d", u/t*100)}')

# CPU load
cpul=$(grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END{printf("%.1f", usage)}')

# Last bo
lb=$(who -b | awk '$1=="system"{print $3" "$4}')

# LVM use\\
 nlvmu=$(lsblk -o TYPE | grep -iq '^lvm$' && echo yes || echo no)

# TCP connections
ctcp=$(ss -Ht state established | wc -l)

# User log
ulog=$(users | wc -w)

# Network
ip=$(hostname -I | awk '{print $1}')
mac=$(ip link show | grep 'ether' | awk '{print $2}')

# Sudo commands
cmnd=$(journalctl _COMM=sudo | grep COMMAND | wc -l)

# Broadcast via wall\\ nwall "#Architecture: $arch
#CPU physical : $pcpu
#vCPU         : $vcpu
#Memory Usage : $ram_use/$ram_total MB ($ram_percent%)
#Disk Usage   : $disk_use/$disk_total GB ($disk_percent%)
#CPU load     : $cpul%
#Last boot    : $lb
#LVM use      : $lvmu
#TCP Conn.    : $ctcp ESTABLISHED
#User log     : $ulog
#Network      : IP $ip ($mac)
#Sudo commands: $cmnd"

Explications ligne à ligne :