Scripting Shell : votre boîte à outils pour macOS

1.990,00  HT

Stagiaires *

 
Durée : 4 jours – Dernière mise à jour : 02/03/2026

 
Niveau avancé

 
Contenu de cette formation au format PDF

 
Livre d’or des formations

Vous utilisez le Terminal de temps en temps, mais vous avez le sentiment de faire toujours les mêmes manipulations ? Et si vous commenciez à automatiser vos tâches quotidiennes ? Cette formation vous guide dans vos premiers pas en scripting Shell, avec une approche progressive et concrète : créer votre boîte à outils. Script après script, vous apprendrez à construire des fonctions réutilisables, à gérer des paramètres et organiser votre code.

Cette formation permettra également aux détenteurs de la certification Jamf Certified Admin – Jamf Pro de renforcer leurs connaissances en scripting Shell afin d’aborder la formation officielle Jamf 400 dans les meilleures conditions.
L’esprit de cette formation — Cette formation n’a pas pour objectif de proposer un enseignement académique ou exhaustif du scripting Shell. Elle s’inscrit dans une démarche pragmatique, orientée vers la réalisation de solutions fonctionnelles et adaptées aux besoins concrets. Les participants disposeront du temps nécessaire pour présenter leurs propositions, chacune étant considérée comme valable dès lors qu’elle est cohérente, opérationnelle et compréhensible. L’accent est mis sur la diversité des approches, l’efficacité des scripts et le partage d’expériences.
Cette formation sera animée par Franck Sartori, directeur technique et ingénieur système chez Agnosys.

Objectifs

• Poser les bases d’une démarche d’automatisation sur macOS
• Comprendre et gérer les permissions des fichiers et dossiers
• Utiliser CodeRunner pour écrire, tester et exécuter des scripts Shell
• Maîtriser les éléments fondamentaux du scripting : variables, conditions et boucles
• Afficher des messages et interagir avec l’utilisateur avec AppleScript
• Manipuler des tableaux, des fichiers .plist et des fonctions
• Déployer ou exécuter un script Shell à distance via une solution MDM

Qui peut s’inscrire ?

Cette formation s’adresse aux administrateurs de Mac souhaitant débuter en scripting Shell et structurer une démarche d’automatisation.

Pré-requis

Pour s’inscrire à cette formation, les participants doivent :
– avoir suivi la formation Fondamentaux de l’administration de macOS (Réf. SE/ASMOS)
– ou avoir des responsabilités d’administration de macOS au quotidien.

Participants et matériels sous la responsabilité d’Agnosys

Cette formation est limitée à six participants maximum.

Les démonstrations effectuées par le formateur seront réalisées avec un Mac équipé de la version la plus récente de macOS.

La classe sera dotée d’une solution MDM permettant de déployer ou d’exécuter un script Shell à distance.

Matériels sous la responsabilité exclusive des participants

Chacun des participants devra être équipé sous sa responsabilité d’un Mac de test équipé de la version la plus récente disponible du système d’exploitation macOS, avec un compte administrateur connu, et connecté à un réseau autorisant un accès libre à Internet.

Attention — La formation prévoit d’utiliser le logiciel CodeRunner. Celui-ci est disponible à l’adresse https://coderunnerapp.com/ en cliquant sur le bouton « Download ». Les participants doivent s’assurer que le logiciel peut être exécuté, soit parce que la période d’essai de 2 semaines est toujours active pour toute la durée de la formation, soit parce qu’ils disposent d’une licence valide.

Attention — Le Mac ne doit pas être inscrit dans une solution MDM. Il peut appartenir à un programme de déploiement Apple mais ne doit pas être associé à un profil d’inscription automatisée des appareils. La formation prévoit une inscription manuelle de ce Mac dans la solution MDM de la classe via une URL Web.

Recommandation — Pour fluidifier la réalisation des travaux pratiques, notamment lors des tâches requérant un changement de compte utilisateur, nous recommandons aux participants de suivre la formation depuis un autre ordinateur Mac ou PC ou une tablette, équipé d’une caméra et d’un micro, qui servira uniquement à l’utilisation du logiciel Zoom et à l’affichage des ressources du cours.

Avant de vous inscrire à cette formation à distance, veuillez consulter la page Informations pour vérifier que vous pouvez réunir les pré-requis.

Commandes essentielles dans le Terminal

– Lancer le Terminal
– Afficher le dossier courant
– Lister le contenu d’un dossier

– Se déplacer dans l’arborescence
– Créer un dossier ou un fichier vide
– Copier, déplacer, renommer, supprimer
– Vérifier et modifier les privilèges
– Localiser une commande dans le PATH
– Afficher la page de manuel d’une commande
– Exécuter une commande en tant que root

Travaux pratiques :
– Commandes et raccourcis dans l’application Terminal
– Renommage, déplacement, copie et suppression
– Observation et modification des privilèges

Mon premier script dans CodeRunner

– Installer et lancer CodeRunner
– Configurer CodeRunner pour écrire un script Shell en bash ou zsh
– Vérifier le shebang
– Ajouter des commentaires
– Afficher le résultat d’une commande sur la sortie standard
– Enregistrer le résultat d’une commande dans un fichier texte
– Différencier une redirection de type création et ajout
– Initialiser une variable et rappeler une variable
– Mettre en œuvre « Command substitution » et « If statement »
– Utiliser des commandes telles que date, echo, awk, tr, wc, open, system_profiler, say
– Sauvegarder et exécuter le script, en tant que l’utilisateur connecté ou root

Travaux pratiques :
– Configuration de CodeRunner pour utiliser bash ou zsh
– Commentaire, redirection et variable
– Exécution du script depuis l’application Terminal
– Substitution de commande (Command substitution)
– Instruction conditionnelle (if statement)
– Extraction et transformation de données avec les commandes awk et tr
– Comptage avec la commande wc
– Utilisation des paramètres de position

Affichage de messages et interactions avec l’utilisateur

– Affichage d’un message avec AppleScript
– Demande d’une entrée utilisateur avec AppleScript
– Exécution d’un AppleScript depuis un script Shell
– Récupération de la réponse de l’utilisateur dans une variable
– Insérer des valeurs dynamiques dans les dialogues affichés

Travaux pratiques :
– Récupération d’une entrée utilisateur avec la commande read
– Affichage d’un message avec un dialogue AppleScript
– Récupération d’une entrée utilisateur avec un dialogue AppleScript
– Récupération d’un élément sélectionné dans un dialogue AppleScript

Utilisation des boucles pour automatiser des traitements répétitifs

– Présentation des boucles for, while et until
– Définition des conditions d’entrée et de sortie d’une boucle
– Parcours d’un fichier CSV ligne à ligne
– Sortie d’une boucle en fonction d’une condition (break)
– Passage à l’itération suivante sans terminer la boucle (continue)
– Mise en œuvre des boucles imbriquées

Travaux pratiques :
– Mise en œuvre des boucles for, while et until

– Lecture d’un fichier CSV
– Mise en œuvre d’une boucle imbriquée

Stockage de valeurs dans des tableaux

– Déclaration d’un tableau
– Ajout de valeurs dans un tableau
– Itération sur les éléments d’un tableau
– Suppression d’une valeur et réindexation du tableau
– Insertion d’une valeur à un index donné

Travaux pratiques :
– Déclaration, ajout de valeurs et itération
- Lecture des éléments par numéro d’index
– Insertion d’une valeur dans un tableau
– Suppression d’une valeur dans un tableau

Stockage de valeurs dans des fichiers .plist

– Les domaines de préférences
– Utilisation de la commande defaults pour des opérations simples
– Utilisation de la commande PlistBuddy pour des opérations complexes
– Insertion de dictionnaires et de tableaux
– Itération sur les éléments d’un tableau
– Ajout, modification et suppression de valeurs

Travaux pratiques :
– Lecture et écriture d’un fichier .plist avec defaults
– Lecture et écriture d’un fichier .plist avec PlistBuddy
– Édition d’un fichier .plist avec PlistBuddy
– Itération sur les éléments d’un tableau

Organisation du code avec des fonctions

– Déclaration d’une fonction
– Différence entre variables locales et variables globales
– Appels de fonctions avec des arguments
– Récupération du code de retour d’une fonction

Travaux pratiques :
– Déclaration d’une fonction et utilisation de variables locales
– Capture du résultat d’une fonction
– Refactorisation d’un script

Écriture dans le stockage depuis un script principal

– Syntaxe d’un here document
– Utilisation de here document pour automatiser l’écriture d’un script dans le stockage
– Gestion des privilèges sur le fichier écrit

Travaux pratiques :
– Création d’un script de remédiation
– Écriture du script de remédiation et gestion des privilèges

Exécution automatisée d’un script

– Le processus launchd, les LaunchDaemons et les LaunchAgents
– Emplacement des LaunchDaemons et des LaunchAgents
– Structure d’un fichier LaunchDaemon et LaunchAgent
– Planification avec StartInterval, StartCalendarInterval, RunAtLoad, LaunchOnlyOnce
– Découverte d’un générateur de dictionnaire StartCalendarInterval
– Application des permissions correctes
– Chargement d’un LaunchDaemon en mémoire sans redémarrer le Mac
– Chargement d’un LaunchAgent en mémoire sans fermer la session actuelle
– Vérification de l’état de chargement en mémoire d’un LaunchDaemon et d’un LaunchAgent
– Déchargement de la mémoire d’un LaunchDaemon et d’un LaunchAgent
– Exécution manuelle d’un LaunchDaemon hors de sa planification

Travaux pratiques :
– Mise en œuvre d’un LaunchDaemon
– Recherche de panne sur l’exécution du script
– Mise en œuvre d’un LaunchAgent

Déploiement de scripts depuis une solution MDM

– Présentation de la méthode de déploiement depuis la solution MDM de la classe
– Passage du contexte root au contexte utilisateur
– Détermination de l’utilisateur actuellement connecté
– Déploiement d’un script principal sur un Mac géré
– Déploiement d’un script sur le Bureau de l’utilisateur connecté

Travaux pratiques :
– Inscription du Mac de test dans la solution MDM
– Déploiement du mécanisme de remédiation
– Déploiement d’un script sur le Bureau de l’utilisateur connecté

Utilisation des expressions régulières

– Présentation des expressions régulières (Regex)
– Ancres et symboles
– Classes
– Quantificateurs
– Opérateur Or, groupement, échappement

Travaux pratiques :
– Expérimentations guidées dans regex101.com
– Mise en œuvre dans un script Shell
– Validation d’une entrée utilisateur

Lecture de données au format JSON

– Présentation de JSON
– Représentation d’un objet et d’un tableau d’objets
– Outils de lecture : plutil et jq
– Lecture d’un objet et lecture d’un objet dans un tableau
– Détermination du nombre d’objets dans un tableau

Travaux pratiques :
– Lecture des données depuis une variable
– Lecture des données depuis un fichier

Référence Agnosys

SE/SSTB

Durée

4 jours

Certification

Non

Support de cours

En français