|
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