Utils - Juuujuuu/Born2BeRoot GitHub Wiki

https://www.hostinger.fr/tutoriels/introduction-au-script-bash-avec-exemples


cron est un programme qui permet aux utilisateurs des systèmes Unix d'exécuter automatiquement des scripts, des commandes ou des logiciels à une date et une heure spécifiée à l'avance, ou selon un cycle défini à l'avance.

minute hour day_of_month month day_of_week command_to_run soit pour nous : */10 * * * * /usr/local/bin/monitoring.sh

https://vitux.com/how-to-setup-a-cron-job-in-debian-10/


netstat, pour « network statistics », est une ligne de commande affichant des informations sur les connexions réseau, les tables de routage et un certain nombre de statistiques dont ceux des interfaces, sans oublier les connexions masquées, les membres multicast, et enfin, les messages netlink.

https://fr.wikipedia.org/wiki/Netstat


awk permet d'appliquer un certain nombre d'actions sur un fichier

La syntaxe de awk est la suivante:

awk [-F] [-v var=valeur] 'programme' fichier ou awk [-F] [-v var=valeur] -f fichier-config fichier

https://www.shellunix.com/awk.html


wall est une commande Unix abréviation de "Write to all", qui affiche un message à tous les utilisateurs connectés.


  • L’architecture de votre système d’exploitation ainsi que sa version de kernel : uname -a

  • Le nombre de processeurs physiques : on tape "lscpu" pour avoir des informations système ou cat de "/proc/cpuinfo". On récupère la ligne "processor". NB : CPU physique = socket Source : https://qastack.fr/unix/57920/how-do-i-know-which-processors-are-physical-cores grep "physical id" /proc/cpuinfo |wc -l

  • Le nombre de processeurs virtuels : Un processeur virtuel est la représentation d'un coeur de processeur physique pour le système d'exploitation d'une partition logique utilisant des processeurs partagés. Source : https://www.looklinux.com/check-number-of-processor-vcpu-on-linux-virtual-private-server/ grep "^processor" /proc/cpuinfo | wc -l

  • La mémoire vive disponible actuelle sur votre serveur ainsi que son taux d’utilisation sous forme de pourcentage : quand je tape "free -m", je souhaite récupérer les info de la ligne "Mem".

Total : free -m | awk '$1 == "Mem:" {print $2}' Utilisé : free -m | awk '$1 == "Mem:" {print $3}' Mémoire vive dispo : Utilisé / Total MB Total en % : `free -m | awk '$1 == "Mem:" {print $3/$2*100}'

Total : df --total -Bg| awk '$1 == "total" {print $2} Utilisé : df --total -Bm| awk '$1 == "total" {print $3} Total en % : df --total | awk '$1 == "total" {print $5}

  • Le taux d’utilisation actuel des processeurs sous forme de pourcentage : Le programme top fournit une vue dynamique temps réel du système en cours d'exécution. Source : http://manpages.ubuntu.com/manpages/cosmic/fr/man1/top.1.html Le flag '-bn1' permet de "figer" la table top pour récupérer les infos. top -bn1 | grep "^%Cpu" | awk '{print $4}'

  • La date et l’heure du dernier redémarrage. who -b | awk '{print $3" "$4}'

  • Si LVM est actif ou pas. (Logical Volume Manager) lsblk | grep "lvm" | awk '{if ($1) {print "yes"; exit;} else {print "no"}}'

  • Le nombre de connexions actives. netstat | grep "ESTABLISHED" | wc -l

  • Le nombre d’utilisateurs utilisant le serveur. who | wc -l

  • L’adresse IPv4 de votre serveur, ainsi que son adresse MAC (Media Access Control). Source : man de hostname Adresse IPv4 : hostname -I Adresse Mac : `ip -c a | grep "link/ether | awk '{print $2}'

  • Le nombre de commande executées avec le programme sudo. Pour avoir un grep normal, il faut employer le flag ' --text' Source : https://stackoverflow.com/questions/23512852/grep-binary-file-matches-how-to-get-normal-grep-output grep --text "COMMAND=' /var/log/auth.log | wc -l


SCRIPT FINAL

#!/bin/bash arc=$(uname -a) pcpu=$(grep "physical id" /proc/cpuinfo |wc -l) vcpu=$(grep "^processor" /proc/cpuinfo | wc -l) memt=$(free -m | awk '$1 == "Mem:" {print $3}') memu=$(free -m | awk '$1 == "Mem:" {print $2}') memp=$(free -m | awk '$1 == "Mem:" {print $3/$2*100}' | cut -c -5) dskt=$(df --total -Bg| grep "total" | awk {print $2}') dsku=$(df --total -Bm| grep "total" | awk '{print $3}') dskp=$(df --total | grep "total" | awk '{print $5}') cpul=$(top -bn1 | grep "^%Cpu" | awk '{print $4}') lboost=$(who -b | awk '{print $3" "$4}') lvm=$(lsblk | grep "lvm" | awk '{if ($1) {print "yes"; exit;} else {print "no"}}') co=$(netstat | grep "ESTABLISHED" | wc -l) user=$(who | wc -l) ip=$(hostname -I) mac=$(ip -c a | grep "link/ether" | awk '{print $2}') sudo=$(grep --text "COMMAND=' /var/log/auth.log | wc -l)`

wall " #Architecture: $arc #CPU physical: $pcpu #vCPU: $vcpu #Memory Usage: $memu/${memt}MB ($memp%) #Disk Usage: $dsku/${dskt}Gb ($dskp%) #CPU Load:$cpul% #Last Boot: $lboost #LVM use : $lvm #Connexions TCP: $co ESTABLISHED #User log: $user #Network: $ip ($mac) #Sudo: $sudo cmd"