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}'
- La mémoire disponible actuelle sur votre serveur ainsi que son taux d’utilisation sous forme de pourcentage. Source : https://waytolearnx.com/2019/05/10-commandes-pour-verifier-lespace-disque-sous-linux.html Le flag ' -Bg' permet d'afficher en Gb. Le flag ' -Bm'permet d'afficher en Mb
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"