Scripts
Un script commence par un shebang, doit être exécutable (droits Unix), appelé avec son chemin s’il n’est pas dans le PATH du shell.
Tester et interpréter le code suivant.
#!/bin/sh FOO=Bonjour BAR=${FOO}Monde echo $BAR for i in *; do echo $(realpath "$i") done if [ -d /tmp ]; then if ls /tmp | grep 0; then echo Oui else touch /tmp/2024 echo Non fi fi
Dans un fichier
truc.sh
, recopier les lignes suivantes :#!/bin/sh echo "Bonjour" echo $0 echo $1 echo $2 echo $#
Rendre le fichier exécutable et le lancer. L’essayer avec des arguments divers.
À quoi servent les variables
$0
,$1
,$2
et$#
?Écrire un script shell qui liste les fichiers contenus dans un chemin donné en argument sans utiliser la commande
ls
. Les dossiers devront être listés avant les fichiers.Indice : on pourra broder sur la boucle
for i in *; do echo "$i"; done
. Dans cette boucle,*
est un glob ; c’est un motif du shell pour capturer les noms de fichiers et dossiers.Écrire un script
myps.sh
qui liste les processus lancés (PID, commande, propriétaire) sans utiliser la commandeps
.Indice : on peut utiliser
/proc
.Écrire un script
pause.sh
chargé de mettre en pause un processus donné par son nom. L’usage de ce script sera./pause.sh firefox
par exemple. Dans cet exemple, le script enverra le signal STOP au processus firefox, patientera 10 secondes puis enverra le signal CONT à ce même processus. (Note : l’utilisation de ps est autorisée)Écrire un script shell de backup. Il prendra en argument le dossier à sauvegarder. Il archivera, compressera et chiffrera ce dossier. Puis il enverra l’archive chiffrée sur un serveur connu. Une fois l’archive envoyée sans erreur, il supprimera les fichiers intermédiaires, et sur le serveur ne conservera que les 3 backups les plus récents.
On utilisera
tar
pour l’archivage/compression ;openssl bf
pour le chiffrement ; le nom de l’archive chiffrée devra contenir la date et l’heure du backup.Écrire un script de rollback qui récupèrera le backup le plus récent et le décompressera dans un dossier donné en argument au script.
Planifier une sauvegarde tous les jours à 13h.
Écrire un script shell qui explore
/var/log
en cherchant dans tous les fichiers non gzippés les IPs qui apparaissent. Énumérer ces IPs et les fichiers où elles apparaissent.