Automatiser l’installation et la configuration d’imprimantes sur Mac 6 avril 2019 6 avril 2019 Frédéric Genevey

Mise en garde: je ne suis pas informaticien, je suis enseignant. Je dois gérer un parc de 400 Mac dans une école, plus ceux des collègues. Ce qui suit est une solution pragmatique pour configurer des imprimantes sur des Mac.

En tant que répondant informatique de mon école, je suis confronté à un problème: installer des photocopieurs ou imprimantes réseau n’est pas une chose aisée pour tout le monde. Par ailleurs, par défaut, les appareils sont configurés pour des impressions en couleur. Or, une copie couleur nous est facturée 3 fois le prix du noir-blanc. Enfin, quand on doit configurer une salle de 28 ordinateurs, il faut pouvoir automatiser la chose. J’ai donc décidé de créer des applications configurant automatiquement les photocopieurs sur un Mac, avec réglage des préférences par défaut et des préréglages. Le tout avec le génial Automator.

Concrètement, pour mes collègues, voici comment cela se passe:

Je suis prêt pour un Oscar! Les collègues, eux, téléchargent les applications et suivent la procédure décrite ici: http://www.ecub.info/?page_id=1379


La démarche

Tout d’abord, il s’agit de comprendre un peu comment fonctionne le système d’impression sur Mac. Ce dernier est basée sur CUPS (Common Unix Printing System ➡️ Wikipedia). La configuration d’une imprimante est basée sur un fichier PPD (PostScript Printer Description), qui décrit les caractéristiques de l’imprimante. Ce fichier est installé par le driver, puis modifié en fonction des options présentes et du paramétrage par défaut. Ensuite, il y a un fichier préférence com.apple.print.custompresets, qui définit les différentes préférences de l’utilisateur. Le processus va donc consister à créer la file d’impression, puis de remplacer le fichier .ppd et le fichier de préférence par ceux que nous aurons préconfigurés.


La préconfiguration

Dans l’exemple qui va suivre, je vais configurer trois photocopieurs Ricoh d’un coup.

Pour commencer, il faut supprimer les imprimantes que nous aurions déjà installées et pour lesquelles nous allons créer le programme. Ensuite, il faut installer les derniers pilotes d’impression du fabriquant. Enfin il faut activer l’accès à CUPS, en passant la ligne de commande suivante dans le Terminal:

cupsctl WebInterface=yes

Si on ne veut pas passer par le terminal, il est aussi possible d’activer l’accès à CUPS en lançant la petite application suivante, que j’ai créée exprès pour l’occasion: télécharger Enable CUPS.

  • Dans les préférences Système, configurer les imprimantes avec leur IP (pas en Bonjour!) en IPP.
  • Configurer les options, par exemple, le finisseur et les différents modules installés (agrafage, plieuse, perforatrice…)
  • Se connecter à CUPS en ouvrant l’adresse http://localhost:631 dans un navigateur web et cliquer sur Printer.
  • Sélectionner l’imprimante que l’on veut configurer. Dans mon cas, Salle_maitres.
  • Cliquer sur le menu Administration, puis sélectionner Set Defalut Options.
  • Modifier les réglages par défaut si nécessaire.
  • Par défaut, le pilote du photocopieur est réglé en recto/verso et surtout en couleur. Il comptabilisera ainsi toutes les copies comme une copie couleur. Pour modifier cela, cliquer sur General.
  • Modifier les différents paramètres selon ses besoins. Pour ma part: recto/verso sur OFF et Mode couleur sur Noir et blanc.
  • Enfin, au bas de la page, cliquer sur Set Default Options.
  • Dans Job Log, j’ai encore coché Activer code utilisateur, puisque c’est le système utilisé pour nous authentifier sur nos photocopieurs.
  • Réaliser ces étapes pour toutes les imprimantes désirées.
  • A ce moment, en général, je redémarre le Mac.

Récupération des fichiers de configuration

Il faut maintenant récupérer le fichier .ppd modifis. On le trouve ici: /private/etc/cups/ppd/. Pour ceux qui ne sont pas familiarisés avec le Mac, on accède à ce dossier depuis le Finder en allant dans le menu Aller/Aller au dossier…et en entrant le chemin vers le dossier.

  • Rechercher le fichier xxx.ppd qui correspond à notre imprimante. Attention: le fichier xxx.ppd.O est l’ancienne version du PPD, avant les modifications.
  • Copier le fichier sur le bureau.

Maintenant, nous devons aller chercher les préférences de l’utilisateur. Comme au point précédent, il faut se rendre dans le dossier suivant: /Library/Preferences/

  • On va rechercher le fichier suivant: /Library/Preferences/com.apple.print.custompresets.forprinter.nom_imprimante.plist. Dans mon cas, ce sera: /Library/Preferences/com.apple.print.custompresets.forprinter.Salle_maitres.plist.
  • Copier ce fichier sur le bureau.

Créer l’application avec Automator

On arrive au meilleur moment: bricoler des scripts. Je ne me suis pas trop cassé la tête; je balance des AppleScripts et des commande de terminal. Pour cela, Automator est idéal. Surtout quand, comme moi, on est un bidouilleur, pas un informaticien sachant programmer proprement. De plus, se baser sur des AppleScripts et sur des commandes de terminal permet de rendre le logiciel retrocompatible jusqu’à des OS antiques. J’ai encore des collègues qui travaillent sur Mac OS Mountain Lion (10.8)… Théoriquement, le programme devrait être compatible en tous cas jusqu’à Mac OS Lion (10.7). Mais je n’ai pas testé jusque là.

Ne vous embêtez pas à tout recréer, vous pouvez éditer directement ce programme. Si vous voulez d’abord essayer de créer une application pour l’installation et la configuration pour une seule imprimante au lieu de trois, vous pouvez travailler à partir de l’application suivante: http://www.mitic.education//httpdocs/files/Install_printer_neptune.zip

Prenons maintenant la première action. Il s’agit d’une action Automator qui affiche un message dans une fenêtre:

Ce bloc permet d’afficher un message, demandant une confirmation (OK), ou une sortie du programme (Annuler). Le résultat est le suivant:

Passons au deuxième bloc. Il s’agit d’installer les imprimantes à l’aide de la commande lpadmin. Pour cela, on va utiliser un bloc Exécuter un script shell, qui permet d’exécuter une commande de terminal.

Voici la commande complète:

lpadmin -p Salle_maitres -E -v lpd://10.90.3.210 -P ‘/Library/Printers/PPDs/Contents/Resources/RICOH MP C6502’
lpadmin -p Labo_sciences -E -v lpd://10.90.3.209 -P ‘/Library/Printers/PPDs/Contents/Resources/RICOH MP C2003’
lpadmin -p Reprographie -E -v lpd://10.90.3.211 -P ‘/Library/Printers/PPDs/Contents/Resources/RICOH MP C8002’

Comme on le voit, on a besoin d’un fichier de descritption PPD pour la bonne imprimante qui se situe dans le dossier /Library/Printers/PPDs/Contents/Resources/. Il est important de bien sélectionner le bon fichier, qui correspond au modèle de l’imprimante. Il faut ici copier le nom du fichier avant de le coller dans le script. Dans mon exemple, j’ai trois modèles différents de photocopieurs MP C8002, MP C6502, MP C2003)

Voici la structure de la commande (en italique, les variables à modifier selon votre configuration):

lpadmin -p Nom_Imprimante -E -v lpd://IP_Imprimante -P ‘/Library/Printers/PPDs/Contents/Resources/PPD_Imprimante

  • IP_Imprimante: l’adresse IP de votre imprimante
  • PPD_Imprimante: le nom du fichier PPD du modèle de votre imprimante qui se trouve dans: /Library/Printers/PPDs/Contents/Resources/

Passons au troisième bloc. Celui-ci est facultatif. Il s’agit à nouveau d’une commande terminal qui permet de rendre actif l’accès à CUPS. Cela me permet d’avoir directement l’accès à CUPS pour modifier des préférences par la suite. Tant qu’à se casser les pieds pour créer un programme, autant préparer le terrain pour se faciliter la vie!

Le quatrième bloc est le plus complexe (et celui qui m’a posé le plus de problèmes). Vous vous souvenez du fichier .ppd et du fichier de préférence .plist que je vous ai demandé de sauvegarder sur votre bureau? Et bien, il faut maintenant les envoyer sur les ordinateurs à configurer. J’ai décidé d’être pragmatique, à défaut d’être élégant (un ouvrier en bleu de travail est en général plus productif qu’un dandy avec un haut-de-forme): j’ai stocké les fichiers .ppd et .plist sur Internet. Le programme va donc les télécharger, avant des les installer dans le bon dossier. Deux exemples:

  • Vous possédez un site web. Dans ce cas, vous y téléchargez en FTP les fichiers voulus et vous récupérez l’URL pour y accéder (mon choix).
  • Vous voulez utiliser Dropbox avec un lien de partage. La solution est excellente. Mais si vous modifiez vos fichiers, en remplaçant les anciens par les nouveaux, l’URL d’accès va changer. Il faudra mettre à jour les scripts.

Voilà comment se présente le quatrième bloc. C’est à nouveau un script Shell:

Voici le script complet:

osascript -e ‘do shell script « sudo curl http://ecub.info/printers/ppd/Reprographie.ppd -o /private/etc/cups/ppd/Reprographie.ppd http://ecub.info/printers/ppd/Salle_maitres.ppd -o /private/etc/cups/ppd/Salle_maitres.ppd http://ecub.info/printers/ppd/Labo_sciences.ppd -o /private/etc/cups/ppd/Labo_sciences.ppd http://ecub.info/printers/prefs/com.apple.print.custompresets.forprinter.Reprographie.plist -o /Library/Preferences/com.apple.print.custompresets.forprinter.Reprographie.plist http://ecub.info/printers/prefs/com.apple.print.custompresets.forprinter.Salle_maitres.plist -o /Library/Preferences/com.apple.print.custompresets.forprinter.Salle_maitres.plist http://ecub.info/printers/prefs/com.apple.print.custompresets.forprinter.Labo_sciences.plist -o /Library/Preferences/com.apple.print.custompresets.forprinter.Labo_sciences.plist » with administrator privileges’

Reprenons l’exemple uniquement pour notre photocopieur à la salle des maîtres; cela donne:

osascript -e ‘do shell script « sudo curl http://ecub.info/printers/ppd/Salle_maitres.ppd -o /private/etc/cups/ppd/Salle_maitres.ppd http://ecub.info/printers/prefs/com.apple.print.custompresets.forprinter.Salle_maitres.plist -o /Library/Preferences/com.apple.print.custompresets.forprinter.Salle_maitres.plist » with administrator privileges’

Par rapport aux shell script précédents, on peut immédiatement constater que la syntaxe est différente. En effet, le script commence par un osascript -e. Cette commande permet, depuis le Terminal, d’exécuter un script. La commande do shell script, exécute donc un shell script dans un shell script… Cela devient compliqué. Le problème est qu’on va aller tripatouiller des parties intimes de MacOS. Il nous faut donc un accès administrateur pour y installer nos fichier .ppd et .plist. Quand on lit le code dans son ensemble, on arrive à:

osascript -e ‘do shell script « sudo

SCRIPT

 » with administrator privileges’

On exécute un script, avec les privilèges d’administrateur. En effet, notre commande commence par sudo, soit un accès administrateur. Le mot de passe est nécessaire. Cette manière de faire me permet d’afficher une fenêtre demandant un mot de passe administrateur:

A ce stade, un informaticien doit être en train de faire une crise d’apoplexie, après s’être arraché tous les cheveux (y a pas de raison que je sois le seul chauve): la méthode est assez proche de celle de Conan le Barbare, mais ça marche!

Reprenons tout cela. Les variables sont en italique:

osascript -e ‘do shell script « sudo curl http://url_web/fichier.ppd -o /private/etc/cups/ppd/fichier.ppd http:/url_web/com.apple.print.custompresets.forprinter.fichier.plist -o /Library/Preferences/com.apple.print.custompresets.forprinter.fichier.plist » with administrator privileges’

La commande cURL permet de récupérer un contenu sur Internet. Ici, nos fichiers .ppd et .plist. Commençons par le fichier PPD: On indique l’URL du fichier sur Internet, suivi de -o, puis le chemin ainsi que le nom du fichier à créer. On fait la même chose pour le fichier .plist.

Au final, on en revient au code déjà présenté:

osascript -e ‘do shell script « sudo curl http://ecub.info/printers/ppd/Salle_maitres.ppd -o /private/etc/cups/ppd/Salle_maitres.ppd http://ecub.info/printers/prefs/com.apple.print.custompresets.forprinter.Salle_maitres.plist -o /Library/Preferences/com.apple.print.custompresets.forprinter.Salle_maitres.plist » with administrator privileges’

En rouge, l’origine du fichier, et en bleu sa destination.

Enfin, comme tout se passe en arrière-plan, on délivre une confirmation à l’utilisateur que tout est en ordre.

Quand vous en êtes à ce stade, merci de me créditer par la phrase suivante:

Sur une idée de Frédéric Genevey – https://mitic.education et http://edurobot.ch. Si vous aimez ce programme, offrez une bière ou un thé vert-fenouille-detox à votre responsable informatique ou votre administrateur système.

Il reste à enregistrer le programme. Normalement, si vous êtes partis sur ma base, vous allez directement compiler une application. Sinon, allez sous Fichier/Convertir en… et choisir Application. Pour ma part, j’ai un compte développeur payant chez Apple. Cela me permet de proposer mes programmes sans le message semblable à ce qui suit, qui déroute les plus novices des utilisateurs:

Si vous gérez un parc informatique Mac dans une école francophone et que votre employeur (comme le mien… Merci l’Etat de Vaud…) refuse de vous payer un compte développeur chez Apple, vous pouvez me contacter via les commentaires. Je vous compilerai votre programme avec ma signature.

Enfin, si vous avez des idées pour améliorer mon petit programme, n’hésitez pas à me les communiquer: frederic.genevey @ vd.educanet2.ch

Merci!