Introduction
Dans ce projet, vous allez apprendre à récupérer et à afficher des informations système sur un serveur Linux. Le script getinfo.sh que vous allez créer peut être utilisé pour rassembler rapidement des détails importants sur le matériel, le logiciel et la configuration réseau du serveur.
👀 Aperçu
$ sh getinfo.sh
## Exemple
nombre de cœurs CPU : 8
mémoire totale : 30 G
mémoire libre : 10867 M
taille du disque : 20G
architecture du système : 64
nombre de processus : 40
nombre de logiciels installés : 1389
adresse IP : 1.32.X.X
🎯 Tâches
Dans ce projet, vous allez apprendre :
- À récupérer le nombre de cœurs CPU, la mémoire totale, la mémoire disponible, la taille du disque, l'architecture du système, le nombre de processus en cours d'exécution, le nombre de packages logiciels installés et l'adresse IP du serveur.
- À utiliser diverses commandes et outils Linux, tels que
grep,free,df,getconf,ps,dpkg-queryetip, pour rassembler des informations système. - À écrire un script zsh qui combine ces commandes pour fournir une vue d'ensemble complète de l'état du serveur.
🏆 Réalisations
Après avoir terminé ce projet, vous serez capable de :
- Comprendre comment utiliser le scripting shell pour automatiser la collecte d'informations système.
- Acquérir une familiarité avec les commandes Linux couramment utilisées et leurs applications.
- Créer un script réutilisable qui peut être exécuté pour récupérer et afficher rapidement les détails importants du serveur.
- Appliquer vos connaissances nouvellement acquises pour surveiller et résoudre les problèmes des systèmes Linux de manière plus efficace.
Créer le script getinfo.sh
Dans cette étape, vous allez créer le script getinfo.sh dans le répertoire /home/labex/project.
Ouvrez un éditeur de texte et créez un nouveau fichier nommé
getinfo.shdans le répertoire/home/labex/project.Ajoutez la ligne de shebang suivante au début du fichier :
#!/bin/zshCette ligne spécifie que le script doit être exécuté en utilisant le shell zsh.
Ajoutez les commentaires suivants au script :
## getinfo.sh - Script d'informations système Linux ## Ce script récupère les informations sur le CPU, la mémoire, le disque et autres de serveur Linux.Ces commentaires fournissent une description brève du but du script.
Enregistrez le fichier.
Récupérer les informations du CPU
Dans cette étape, vous allez ajouter une fonction au script getinfo.sh pour récupérer le nombre de cœurs CPU.
Ouvrez le script
getinfo.shdans un éditeur de texte.Ajoutez la fonction suivante au script :
## Fonction : Récupérer des informations sur le CPU cpu_num=$(grep -c '^processor' /proc/cpuinfo)Cette fonction utilise la commande
greppour compter le nombre d'entrées de processeur dans le fichier/proc/cpuinfo, qui représente le nombre de cœurs CPU.Enregistrez les modifications apportées au script.
Récupérer les informations de mémoire
Dans cette étape, vous allez ajouter des fonctions au script getinfo.sh pour récupérer la taille totale de la mémoire et la taille de la mémoire disponible.
Ouvrez le script
getinfo.shdans un éditeur de texte.Ajoutez les fonctions suivantes au script :
## Fonction : Récupérer la taille totale de la mémoire (en GB) memory_total=$(free -g | awk '/^Mem:/ {print $2}') ## Fonction : Récupérer la taille de la mémoire disponible (en MB) memory_free=$(free -m | awk '/^Mem:/ {print $4}')La première fonction utilise la commande
freeavec l'option-gpour récupérer la taille totale de la mémoire en gigaoctets. La deuxième fonction utilise la commandefreeavec l'option-mpour récupérer la taille de la mémoire disponible en mégaoctets.Enregistrez les modifications apportées au script.
Récupérer les informations de disque
Dans cette étape, vous allez ajouter une fonction au script getinfo.sh pour récupérer la taille totale du système de fichiers monté sur le répertoire racine.
Ouvrez le script
getinfo.shdans un éditeur de texte.Ajoutez la fonction suivante au script :
## Fonction : Récupérer la taille totale du disque du système de fichiers racine (en GB) disk_size=$(df -h / | awk '/\// {print $2}')Cette fonction utilise la commande
dfavec l'option-hpour récupérer la taille totale du système de fichiers monté sur le répertoire racine (/), puis extrait la valeur de la taille à l'aide d'awk.Enregistrez les modifications apportées au script.
Récupérer les informations sur le mode de bits du système
Dans cette étape, vous allez ajouter une fonction au script getinfo.sh pour récupérer les informations sur le nombre de bits du système.
Ouvrez le script
getinfo.shdans un éditeur de texte.Ajoutez la fonction suivante au script :
## Fonction : Récupérer le nombre de bits du système system_bit=$(getconf LONG_BIT)Cette fonction utilise la commande
getconfpour récupérer le nombre de bits utilisés par le système.Enregistrez les modifications apportées au script.
Récupérer les informations sur les processus
Dans cette étape, vous allez ajouter une fonction au script getinfo.sh pour récupérer le nombre de processus en cours d'exécution.
Ouvrez le script
getinfo.shdans un éditeur de texte.Ajoutez la fonction suivante au script :
## Fonction : Récupérer le nombre de processus en cours d'exécution process=$(ps -ef | wc -l)Cette fonction utilise la commande
pspour lister tous les processus en cours d'exécution puis compte le nombre de lignes à l'aide de la commandewc.Enregistrez les modifications apportées au script.
Récupérer les informations sur le logiciel
Dans cette étape, vous allez ajouter une fonction au script getinfo.sh pour récupérer le nombre de paquets logiciels installés.
Ouvrez le script
getinfo.shdans un éditeur de texte.Ajoutez la fonction suivante au script :
## Fonction : Récupérer le nombre de paquets logiciels installés software_num=$(dpkg-query -f '${binary:Package}\n' -W | wc -l)Cette fonction utilise la commande
dpkg-querypour lister tous les paquets logiciels installés puis compte le nombre de lignes à l'aide de la commandewc.Enregistrez les modifications apportées au script.
Récupérer les informations d'adresse IP
Dans cette étape, vous allez ajouter une fonction au script getinfo.sh pour récupérer l'adresse IP de l'interface réseau eth0.
Ouvrez le script
getinfo.shdans un éditeur de texte.Ajoutez la fonction suivante au script :
## Fonction : Récupérer l'adresse IP de eth0 ip=$(ip addr show eth0 | awk '/inet / {print $2}' | sed 's|/.*||')Cette fonction utilise la commande
ippour récupérer l'adresse IP de l'interface réseau eth0 puis extrait l'adresse IP à l'aide d'awket desed.Enregistrez les modifications apportées au script.
Afficher les informations du système
Dans cette étape finale, vous allez ajouter la section d'affichage au script getinfo.sh pour afficher les informations système.
Ouvrez le script
getinfo.shdans un éditeur de texte.Ajoutez la section d'affichage suivante au script :
## Afficher les informations echo "cpu num: $cpu_num" echo "memory total: $memory_total G" echo "memory free: $memory_free M" echo "disk size: $disk_size" echo "system bit: $system_bit" echo "process: $((process - 1))" echo "software num: $software_num" echo "ip: $ip"Cette section utilise la commande
echopour imprimer les informations système au format requis.Enregistrez les modifications apportées au script.
Félicitations! Vous avez maintenant terminé le script getinfo.sh. Vous pouvez exécuter le script en exécutant la commande suivante dans le terminal :
sh getinfo.sh
Le script affichera les informations système telles que spécifiées dans les exigences du projet.
## Exemple
cpu num: 8
memory total: 30 G
memory free: 10867 M
disk size: 20G
system bit: 64
process: 40
software num: 1389
ip: 1.32.X.X
Résumé
Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.



