Récupération d'informations sur un serveur Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

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-query et ip, 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.

  1. Ouvrez un éditeur de texte et créez un nouveau fichier nommé getinfo.sh dans le répertoire /home/labex/project.

  2. Ajoutez la ligne de shebang suivante au début du fichier :

    #!/bin/zsh

    Cette ligne spécifie que le script doit être exécuté en utilisant le shell zsh.

  3. 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.

  4. Enregistrez le fichier.

Récupérer des informations sur le CPU

Dans cette étape, vous allez ajouter une fonction au script getinfo.sh pour récupérer le nombre de cœurs CPU.

  1. Ouvrez le script getinfo.sh dans un éditeur de texte.

  2. 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 grep pour compter le nombre d'entrées de processeur dans le fichier /proc/cpuinfo, qui représente le nombre de cœurs CPU.

  3. Enregistrez les modifications apportées au script.

Récupérer des informations sur la 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.

  1. Ouvrez le script getinfo.sh dans un éditeur de texte.

  2. 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 free avec l'option -g pour récupérer la taille totale de la mémoire en gigaoctets. La deuxième fonction utilise la commande free avec l'option -m pour récupérer la taille de la mémoire disponible en mégaoctets.

  3. Enregistrez les modifications apportées au script.

Récupérer des informations sur le 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.

  1. Ouvrez le script getinfo.sh dans un éditeur de texte.

  2. 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 df avec l'option -h pour 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.

  3. Enregistrez les modifications apportées au script.

Récupérer des informations sur le nombre 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.

  1. Ouvrez le script getinfo.sh dans un éditeur de texte.

  2. 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 getconf pour récupérer le nombre de bits utilisés par le système.

  3. Enregistrez les modifications apportées au script.

Récupérer des 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.

  1. Ouvrez le script getinfo.sh dans un éditeur de texte.

  2. 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 ps pour lister tous les processus en cours d'exécution puis compte le nombre de lignes à l'aide de la commande wc.

  3. Enregistrez les modifications apportées au script.

Récupérer des informations sur logiciels

Dans cette étape, vous allez ajouter une fonction au script getinfo.sh pour récupérer le nombre de paquets logiciels installés.

  1. Ouvrez le script getinfo.sh dans un éditeur de texte.

  2. 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-query pour lister tous les paquets logiciels installés puis compte le nombre de lignes à l'aide de la commande wc.

  3. Enregistrez les modifications apportées au script.

Récupérer des informations sur l'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.

  1. Ouvrez le script getinfo.sh dans un éditeur de texte.

  2. 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 ip pour récupérer l'adresse IP de l'interface réseau eth0 puis extrait l'adresse IP à l'aide d'awk et de sed.

  3. Enregistrez les modifications apportées au script.

Afficher les informations système

Dans cette étape finale, vous allez ajouter la section d'affichage au script getinfo.sh pour afficher les informations système.

  1. Ouvrez le script getinfo.sh dans un éditeur de texte.

  2. 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 echo pour imprimer les informations système au format requis.

  3. 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
✨ Vérifier la solution et pratiquer

Sommaire

Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.