Traitement des données textuelles et mise à jour du système
1. Traitement des données textuelles
Aujourd'hui, on va rassembler toutes ces connaissances et les appliquer dans la pratique pour traiter les données textuelles et effectuer une mise à jour du système. On va découvrir des scénarios réels d'utilisation : de l'analyse des journaux système à l'automatisation de l'installation et de la configuration des paquets.
Task 1 : Recherche des erreurs dans un journal
Scénario : Imagine que tu es un administrateur système, et que tu dois rapidement comprendre ce qui se passe dans le système. Pour cela, on va analyser les journaux système (/var/log/syslog
).
Étape 1 : Filtrage par mots-clés
On commence par chercher des lignes liées aux erreurs, en utilisant grep
:
grep "error" /var/log/syslog
Oh, on a trouvé quelque chose ! Mais améliorons un peu. Disons que tu veux ignorer la casse (que ce soit ERROR
ou error
) :
grep -i "error" /var/log/syslog
Maintenant on voit plus de correspondances. Mais parfois, il faut trouver tout ce qui n'est pas lié aux erreurs :
grep -v "error" /var/log/syslog
Étape 2 : Simplification de la sortie avec cut
Disons que tu es intéressé seulement par le timestamp et le message. Extraitons les colonnes correspondantes :
grep "error" /var/log/syslog | cut -d' ' -f1,2,3,5-
Ici, on utilise cut
pour diviser les lignes par les espaces -d' '
, et on choisit les colonnes 1, 2, 3 (temps) et le texte restant.
Task 2 : Comptage de la fréquence des événements
Maintenant, on veut comprendre à quelle fréquence les erreurs se produisent. On combine grep
, cut
et sort
avec uniq
:
grep "error" /var/log/syslog | cut -d' ' -f5 | sort | uniq -c
Cette commande :
- Recherche des lignes avec des erreurs à l'aide de
grep
. - Extrait uniquement les informations sur la source de l'erreur avec
cut
. - Trie les données avec
sort
, pour queuniq
puisse compter le nombre de répétitions de chaque ligne.
Le résultat ressemble à ça :
10 systemd
7 kernel
5 cron
Les erreurs venant de systemd
se produisent le plus souvent. Il est temps de tirer des conclusions !
2. Chargement et traitement de données externes
Scénario : Analyse des données d'une source externe
Disons qu'on doit télécharger un fichier texte avec des données (par exemple, un fichier de log) depuis un serveur web et l'analyser. Procédons étape par étape.
Étape 1 : Téléchargement du fichier
D'abord, téléchargeons le fichier avec wget
:
wget -O data.log http://example.com/logs/data.log
Le fichier est téléchargé et sauvegardé sous le nom data.log
. En cas d'erreur de téléchargement, ajoutons la reprise :
wget -c -O data.log http://example.com/logs/data.log
Si tu préfères curl
:
curl -o data.log http://example.com/logs/data.log
Étape 2 : Recherche d'informations
Maintenant, recherchons des lignes contenant un certain pattern, par exemple, WARNING
:
grep "WARNING" data.log
Étape 3 : Formatage des données avec awk
Disons que le log contient trois colonnes : date, heure et message. On veut afficher uniquement la date et le message :
awk '{print $1, $3}' data.log
Et si on doit filtrer les lignes où le message contient le mot error
, on peut ajouter une condition :
awk '/error/ {print $1, $3}' data.log
3. Mise à jour du système avec apt-get
et yum
Passons maintenant à des tâches plus "système". Mettre à jour les packages, c'est super important pour maintenir la sécurité et la stabilité du système. On va montrer comment s'y prendre.
Scénario : Mise à jour du système
Étape 1 : Mettre à jour la liste des packages
Pour les distributions basées sur Debian :
sudo apt-get update
Pour les distributions basées sur RedHat :
sudo yum check-update
Étape 2 : Installer les mises à jour
Debian-based :
sudo apt-get upgrade
RedHat-based :
sudo yum update
Étape 3 : Installer un nouveau package
Par exemple, pour installer l'éditeur de texte vim
:
sudo apt-get install vim
sudo yum install vim
Conseil utile
Si tu sais exactement quel package tu veux installer mais que tu n'es pas sûr de son nom, utilise apt search
ou yum search
:
apt search nom_du_package
yum search nom_du_package
4. Tâche finale
Tâche : Automatisation de la mise à jour et du traitement des données
- Créer un script bash, qui :
- Met à jour le système ;
- Télécharge un fichier texte (par exemple, un journal) ;
- Analyse ce fichier pour détecter des erreurs ;
- Enregistre les résultats de l'analyse dans un nouveau fichier.
Voici un exemple de script :
# Étape 1 : Mise à jour du système
echo "Mise à jour du système..."
sudo apt-get update && sudo apt-get -y upgrade
# Étape 2 : Téléchargement du fichier
echo "Téléchargement du fichier journal..."
wget -O data.log http://example.com/logs/data.log
# Étape 3 : Analyse du fichier
echo "Analyse du fichier journal pour détecter des erreurs..."
grep "ERROR" data.log | cut -d' ' -f1,5- | sort | uniq -c > analysis.log
echo "Analyse terminée. Résultats enregistrés dans analysis.log"
Enregistrez ce script, par exemple, sous le nom update_and_analyze.sh
, définissez les droits d'exécution :
chmod +x update_and_analyze.sh
Et lancez-le :
./update_and_analyze.sh
Attention : erreurs typiques
Si vous voyez un message indiquant "accès refusé", assurez-vous que vous exécutez le script en tant qu'utilisateur avec les droits
sudo
.Si
wget
oucurl
ne sont pas installés, ajoutez leur installation au début du script :sudo apt-get install -y wget
Quel est l'intérêt pratique ?
Ces compétences te seront utiles non seulement au travail, mais aussi lors des entretiens. Savoir trouver des erreurs dans les logs, filtrer des données et lancer des mises à jour système est très apprécié par les administrateurs et les ingénieurs. Les scripts permettent d'automatiser des tâches, économisant du temps et garantissant l'absence d'erreurs humaines.
P.S. Rappelle-toi, dans le monde réel, tu rencontreras des tâches où il faudra combiner des commandes, modifier la sortie et configurer automatiquement le système. L'exemple d'aujourd'hui n'est que la partie émergée de l'iceberg de ta future pratique.
GO TO FULL VERSION