← Semaine 13

Laboratoire : scripts qui se lancent tout seuls

Chaîner, rediriger, céduler, incarner en daemon : votre serveur travaille pendant que vous dormez.
0 / 6 missions accomplies

Dans votre shell, testez et observez chaque famille :

$ ls /etc | grep conf | head -n 5 $ sudo apt update && echo "REUSSI" || echo "RATE" $ ls /nexistepas 2> /dev/null ; echo "erreur avalee" $ sort < /etc/passwd > utilisateurs.txt $ ls -yz >> mauvaise-commande.log 2>&1 $ cat mauvaise-commande.log # l'erreur est DANS le fichier
Refaites la dernière avec l'ordre inversé (2>&1 avant le >>) et constatez le piège : l'erreur reste à l'écran !
$ jed dire-la-date.sh
#!/bin/bash jour=$(date | cut -d' ' -f 2) mois=$(date | cut -d' ' -f 3) annee=$(date | cut -d' ' -f 4) echo Nous sommes le $jour $mois $annee >> /home/prenom/la-date.txt
$ chmod +x dire-la-date.sh $ ./dire-la-date.sh && cat /home/prenom/la-date.txt

Ajustez les numéros de colonnes selon le format de VOTRE date (locale différente = colonnes différentes).

Toute la boîte à outils en un script :

#!/bin/bash memoireTotale=$(free -h | grep Mem | tr -s ' ' | cut -d' ' -f 2) memoireUtilisee=$(free -h | grep Mem | tr -s ' ' | cut -d' ' -f 3) swapTotale=$(free -h | grep Swap | tr -s ' ' | cut -d' ' -f 2) swapUtilisee=$(free -h | grep Swap | tr -s ' ' | cut -d' ' -f 3) kernel=$(uname -r) archi=$(uname -m) hote=$(hostname) os=$(hostnamectl | grep Operating | cut -d':' -f 2) echo "Memoire : (RAM)" $memoireUtilisee " / " $memoireTotale echo "Swap : " $swapUtilisee " / " $swapTotale echo "OS : " $os " - " $kernel " - " $archi echo "Identite: " $hote
Remarquez le trio gagnant : grep filtre la ligne, tr -s écrase les espaces, cut prend la colonne. Vous venez d'analyser la sortie d'une commande comme un pro.
$ crontab -e # Choisir une heure proche pour tester (ex: dans 3 minutes) 10 13 * * * /home/prenom/dire-la-date.sh

Le script du hasard :

#!/bin/bash xxd /dev/urandom | head -n 1 | cut -d' ' -f 2 >> /home/prenom/hasard.txt
$ chmod +x hasard.sh # Format -t : MMJJhhmm (mois jour heure minute) $ at -t 03091311 -f /home/prenom/hasard.sh $ atq # voir la file d'attente

Choisissez une heure dans quelques minutes, puis vérifiez le fichier hasard.txt.

# 1. Le script : /usr/bin/battement.sh $ sudo jed /usr/bin/battement.sh
#!/bin/bash while true do echo "$(date) : le coeur bat" >> /var/log/battement.log sleep 10 done
$ sudo chmod +x /usr/bin/battement.sh # 2. Le descripteur : /lib/systemd/system/battement.service $ sudo jed /lib/systemd/system/battement.service
[Unit] Description=Battement de coeur du serveur [Service] ExecStart=/usr/bin/battement.sh [Install] WantedBy=multi-user.target
# 3. Activer, demarrer, verifier $ sudo systemctl enable battement.service $ sudo systemctl start battement.service $ systemctl status battement.service $ tail -f /var/log/battement.log # Ctrl-C pour sortir
Après le labo, pensez au ménage : sudo systemctl stop battement.service et sudo systemctl disable battement.service.
Le serveur travaille tout seul ! Chaînes de commandes, crontab, at et un daemon qui bat la mesure. Semaine 14 : regex, grep, sed et awk - fouiller et transformer les textes comme un chirurgien.