Les petits secrets de Mac OS X

Si vous êtes versés dans le bricolage de votre système vous avez sans doute déjà eu recours à des commandes absconses, que ce soit pour éditer la base de registre Windows, ou pour activer telle ou telle option sous Mac OS X, Linux…
Sous Mac OS X, de nombreuses options de l'interface ou de logiciels tiers sont inaccessibles à l'utilisateur lambda. Il faut alors recourir à la fameuse commande defaults qui permet d'éditer les non moins fameux réglages cachés.
Par exemple, vous pouvez changer l'image de fond qui est affichée au démarrage de Mac OS X, sous la fenêtre de login via cette commande :

sudo defaults write /Library/Preferences/com.apple.loginwindow \
DesktopPicture '/chemin/vers/votre/image.jpg'

Mais c'est compliqué, il ne faut pas se tromper dans la syntaxe.
C'est là qu'intervient l'application Secrets. Cette application se présente sous la forme d'un tableau de configuration qui s'installe dans les préférences système. Il est directement connecté au site internet secrets.blacktree.com qui regroupe et classe les différentes options cachées pour un grand nombre de logiciels.

secrets control pannel

Le panneau de configuration Secrets transforme pour vous toutes ces commandes complexes, à base de defaults, en case à cocher ! Maintenant, vous pouvez activer des options cachées en quelques clicks, et surtout, vous avez accès très facilement aux modifications que vous avez faites. Si il n'est pas toujours facile de se souvenir de toutes les commandes defaults qu'on a pu utiliser sur telle ou telle machine, retrouver ses modifications dans Secrets est un jeu d'enfants.
Attention cependant, certaines options pourraient rendre des logiciels inutilisables, ou causer des pertes de données. Ne faites pas n'importe quoi sans une bonne sauvegarde et beaucoup de bon sens.

Related posts

FreeBSD, et après ?

J'utilise quotidiennement Mac OS X client et serveur depuis des années. Néanmoins, mon premier contact réel avec un UNIX remonte à l'époque de Mac OS 9. Rhapsody et Mac OS X Server avaient déjà faits parler d'eux, et Mac OS X client était annoncé à court terme sous forme de béta publique. Ne voulant pas rater la transition entre le monde affreux de Mac OS 9 et le monde inexistant mais déjà merveilleux de Mac OS X, j'avais demandé à quelques barbus de ma connaissance vers quel UNIX libre je pouvais me tourner pour m'entraîner un peu.
C'est ainsi que j'ai commencé à prendre en main FreeBSD (3.x à cette époque).
Depuis, j'utilise ce BSD avec grande satisfaction sur mes serveurs personnels. Malheureusement, plus le temps passe, et plus j'ai l'impression que FreeBSD tombe en désuétude. En tant qu'utilisateur j'ai de plus en plus de mal à être rassuré par l'évolution de ce système. Le support matériel est parfois mauvais, les pilotes parfois dépassés, les performances parfois bien en dessous de ce que le matériel est supposé délivrer. Il est évident que mes abonnements aux listes freebsd-hardware, freebsd-performance, et à divers news groups freebsd n'ont pas une bonne influence sur mon ressenti. Ces lieux de discussion font la part belle aux problèmes, puisque les gens viennent y chercher des solutions. Tout ceci manque cruellement de "success-stories" et de nouvelles rassurantes.
À chaque fois que je réfléchi à un possible renouvellement de mes serveurs, je me creuse la tête. C'est la course aux spécifications : quel chipset est le mieux géré ? Est ce que ces disques SAS hors de prix seront bien supportés, ou auront-ils les performances de mauvais disques SATA ? C'est sans fin.

donation receipt freebsd foundation

J'ai le sentiment profond que FreeBSD manque d'énergie vitale. Tant pour avancer, innover, que pour exister aux yeux du public. Les success-stories que j'évoque plus haut et qui manquent tant à FreeBSD sont à mon sens une part importante de l'aura d'un système d'exploitation. À plus forte raison si ce système est libre. Ça stimule les utilisateurs, les développeurs, et les sponsors. Je n'ai aucun indicateur pour mesurer le nombre d'utilisateurs de FreeBSD, ou le nombre de gens qui contribuent directement et indirectement à cet OS. Par contre, la fondation FreeBSD indique sur son site ce qu'elle reçoit comme donations. Fin 2007, les dons s'élevaient à 359 000 $, grace notamment à 9 donations de plus de 5 000 $. Fin 2008, le total n'atteignait qu'un peu plus de 200 000 $. Et même si nous ne sommes pas encore fin décembre, le bilan 2009 s'annonce très mauvais, avec seulement 52 000 $ de dons. La "crise" est passée par là, et sans doute que les gros donneurs attendent la toute fin de l'année pour financer des projets open source avec leurs fonds de tiroirs. Parfois je me prends à rêver que je gagne au Loto, et presque à chaque fois, je m'imagine en mécène de FreeBSD, encourageant la fondation à mettre le paquet pour améliorer ce système. On a vu des rêves plus stupides. Parce que je me doute bien que je ne gagnerai jamais au Loto, j'ai décidé de ne plus attendre, et de contribuer (modestement) au financement de mon système libre préféré.

Related posts

iCal comme "icalcul mental"

Apple vous aide à développer vos neurones. Vous aussi, devenez imbattable en calcul mental avec iCal :

alors, combien d'heures dans 20175 minutes ?
Alors, combien d'heures dans 20175 minutes ? (iCal 3.0.8, Mac OS X 10.5.8)

Related posts

A script to list service ACLs on Mac OS X 10.5

I personally don't think it's a good thing to blog in english when you're french, unless you are very fluent and your target audience reads english. Today, my audience is the worldwide crowd of Mac OS X Server sysadmin. So, while I'm not fluent, I'm going to write my first post in english.

Background

There is something quite messy in the Service Access Control Lists (SACLs) on Mac OS X 10.5: you just can't display the full users & groups list of a SACL in command line.
Basically, you can do this:

$ dscl . -read /Groups/com.apple.access_ssh
AppleMetaNodeLocation: /Local/Default
GeneratedUID: A7E16606-3C52-42B9-852E-D197C7598EA8
NestedGroups: 955F946A-7C9D-4D3E-B286-E16003380282 ABCDEFAB-CDEF-ABCD-EFAB-CD...
PrimaryGroupID: 101
RealName:
 Remote Login Group
RecordName: com.apple.access_ssh
RecordType: dsRecTypeStandard:Groups

As you can see, this SACL group com.apple.access_ssh has no direct members, only nested groups (NestedGroups key). So, in order to list users, you have to read the content of each nested group. But groups are only available by their name. So the first step is to find out group's names.
At this stage, you have no way to know if the target group is local or if it sits on a remote open directory server, so you must use the /Search path:

$ dscl /Search -search /Groups GeneratedUID 955F946A-7C9D-4D3E-B286-E16003380282
myadmins		GeneratedUID = (
    "955F946A-7C9D-4D3E-B286-E16003380282"
)

The second step is to list users of the group:

$ dscl /Search -read /Groups/myadmins GroupMembership
GroupMembership: admin01 admin02 user01 user02 ldapuser01

But guess what: this group might have more than just users, may be its NestedGroups key is not empty! So at this point, you must also check the NestedGroups value, and recursively follow each group GUID, until you find only users.
Think "huge groups", think "handfulls of nested groups", and watch your fingers as you're going thru dscl torments. You've figured it out: Mac OS X lacks a good command line tool for following a SACL tree of users and groups.

Here come's getsacls.sh

I won't promise you a killer command line tool with foolproof error and recursion handling, but I still believe I've designed a usable piece of shell script. Even if it looks like it's the worst code I've ever wrote (wich is not true, I've made things way uglier).
The source code is too long and messy to be just copy-pasted here, just follow this link to download the getsacls.sh script.

How to get getsacls.sh:
Just download the latest version from here.

How to install getsacls.sh:
Simply copy to your Mac OS X 10.5 server (or managed client). Somewhere in your $PATH should be fine. Then chmod +x the script, so that it can be executed.

How to configure getsacls.sh:
Defaults values should be ok, but if you really want to change something, open the script in your favorite editor, and find the "FEW USER TUNABLE MISCS" section. Edit at your own risks.

How to use getsacls.sh:
It's simple, you just have to launch it. It will then proceed with the parsing of every SACL on your local system.
DO NOT use the sh command to launch this script. getsacls.sh uses special escape sequences and command options that sh will not recognize. Just run:

$ getsacls.sh

If you want to parse only some SACLs, you can provide each SACL name at the command line:

$ getsacls.sh com.apple.access_ssh com.apple.access_loginwindow

Still, you should only use SACL names that exist on your local system.

The default output is "fancy", it uses bold, indentation, and a beach-ball cursor. If you want the "no fancy" mode, you can either edit the corresponding "tunable misc variable" or define FANCY=NO at launch time:

$ FANCY=NO getsacls.sh com.apple.access_ssh

This "no fancy" mode allows for later parsing.

Caveats/bug:
The script will not handle circular references. If your SACL uses nested groups in a circular way (group 1 -> group 2 -> group 1), the script will not stop.
When finding two or more similar users or groups (for example the local admin group and the open directory admin group), it will use only one of them, and that should be the local one.
The script uses SQLite3 as a backend, because bash is not good with arrays, and because I'm not good with PERL/Python/Ruby.

Sample "fancy" output:

com.apple.access_ssh
--------------------------------
   myadmins	/LDAPv3/192.168.128.34	955F946A-7C9D-4D3E-B286-...
     admin01	/Local/Default	9A7917D1-D8E7-49D6-8211-...
     admin02	/Local/Default	40D516A2-4D02-4C92-9505-...
     ldapuser01	/LDAPv3/ldap.example.com	ldapuser01_OUT_OF_OD
     ldapuser02	/LDAPv3/ldap.example.com	ldapuser02_OUT_OF_OD
     ldapuser03	/LDAPv3/ldap.example.com	ldapuser03_OUT_OF_OD
     user01	/LDAPv3/192.168.128.34	49EF9C64-D98B-11D8-BCFA-...
   admin	/Local/Default	ABCDEFAB-CDEF-ABCD-EFAB-...
     root	/Local/Default	FFFFEEEE-DDDD-CCCC-BBBB-...
     admin01	/Local/Default	9A7917D1-D8E7-49D6-8211-...
     admin02	/Local/Default	40D516A2-4D02-4C92-9505-...
     user01	/LDAPv3/192.168.128.34	49EF9C64-D98B-11D8-BCFA-...
================================

Sample "no fancy" output:

com.apple.access_ssh
--------------------------------
g 1 myadmins /LDAPv3/192.168.128.34 955F946A-7C9D-4D3E-B286-...
u 2 admin01 /Local/Default 9A7917D1-D8E7-49D6-8211-...
u 2 admin02 /Local/Default 40D516A2-4D02-4C92-9505-...
u 2 ldapuser01 /LDAPv3/ldap.example.com ldapuser01_OUT_OF_OD
u 2 ldapuser02 /LDAPv3/ldap.example.com ldapuser02_OUT_OF_OD
u 2 ldapuser03 /LDAPv3/ldap.example.com ldapuser03_OUT_OF_OD
u 2 user01 /LDAPv3/192.168.128.34 49EF9C64-D98B-11D8-BCFA-...
g 1 admin /Local/Default ABCDEFAB-CDEF-ABCD-EFAB-...
u 2 root /Local/Default FFFFEEEE-DDDD-CCCC-BBBB-...
u 2 admin01 /Local/Default 9A7917D1-D8E7-49D6-8211-...
u 2 admin02 /Local/Default 40D516A2-4D02-4C92-9505-...
u 2 user01 /LDAPv3/192.168.128.34 49EF9C64-D98B-11D8-BCFA-...
================================

Current version:
As of now, current version of getsacls.sh is 407 ($Id: getsacls.sh 407 2009-07-09 09:36:26Z patpro $). Next revisions will be listed here.

Update: $Id: getsacls.sh 409 2009-07-09 14:30:01Z patpro $
I've added some error handling for a rare case: when a user account lives on a LDAP server distinct from the Open Directory server, the GroupMembership field is not updated on the OD if the user account is destroyed on the LDAP. So according to the GroupMembership the user is still here, but according to the LDAP the user is nowhere to be found.

Update: $Id: getsacls.sh 412 2009-07-23 20:24:54Z patpro $
I'm forcing LC_NUMERIC in the beachball function, so that sleep 0.05 runs as expected even for people not using the dot as a decimal separator. Some cleanup.

Update: $Id: getsacls.sh 414 2009-08-03 10:33:30Z patpro $
Some cleanup and english corrections. Added some delay to the beatchball rotation so it's more enjoyable.

Feel free to comment, and to correct my english ;)

Related posts

Archéologie informatique 5

Depuis le début de l'année, je reprends ici mes vieilles factures de matériel informatique. Aujourd'hui, je fais une légère entorse à la règle, car il s'agit d'une facture de logiciel.

  • 22/03/2000 2001 : Mac OS X 1.0 740,00 Fr (112,80 €)

La facture est bien datée du 22 mars, mais Mac OS X 10.0 n'est sorti officiellement en magasin que le 24 mars 2000 2001. Je vous renvoie à l'histoire d'UNIX d'Éric Levenez pour la filiation complète, et à la page wikipedia de Mac OS X 10.0 pour le détail de cette version en particulier.

Related posts

Slife et la vie privée, un mois après

icone Slife (c) SlifeLabsIl y a un mois, j'écrivais ici à propos de Slife, un outil de time tracking gratuit pour Mac OS X et Windows. Je m'en suis servi tout ce temps sur ma machine personnelle et sur ma machine professionnelle. Il est donc temps de revenir sur ce logiciel.
À mon sens, le gros défaut de Slife (une fois qu'on a accepté ses limites fonctionnelles) c'est l'impossibilité d'accéder aux données enregistrées a postériori. Cela pose un vrai gros problème de respect de la vie privée. En effet, chaque document, chaque page web, chaque email ouvert va donner lieu à un enregistrement dans la base de données de Slife. Ce dernier pourra afficher sans état d'âme des événements comme ceux-ci dans votre tracking journalier et mensuel :

  • aide mobilité site:SuperJob.fr - Google Search
  • Grosse Cochonne sans culotte - xXx

Inutile de vous faire un dessin. Dans votre navigateur vous êtes libre à tout moment d'effacer votre historique. Dans Slife, vous ne pouvez pas le faire. Si vous avez oublié d'activer le mode "Privé" avant de chercher un nouveau job, ou d'aller mater quelques paires de fesses au nez et à la barbe de votre employeur, vous êtes cuits.
Bien sûr, il y aura toujours un petit malin pour aller éditer la base de données de Slife à la main. Mais ce n'est pas le genre d'acrobatie à la portée du premier venu. Je vais néanmoins donner la marche à suivre. Notez bien : j'ai bien sûr testé cette manipulation, mais je ne peux pas garantir qu'elle est inoffensive sur le long terme. Il n'est pas complètement exclu que cela crée des problèmes de cohérence des données dans Slife.
Comme on s'y serait attendu, Slife stocke ses données dans une base de données SQLite (en tout cas sous Mac OS X). SQLite est un moteur de bases de données SQL, léger et rapide. Contrairement à MySQL ou autre, vous n'avez pas besoin qu'un serveur tourne en permanence pour accéder aux données. C'est aussi ce moteur qui est utilisé par Spotlight.
Il est possible de rentrer dans des bases de données SQLite directement avec les outils fournis dans Mac OS X. Il faut pour cela lancer l'application Terminal, et taper au prompt :

sqlite3 "Library/Application Support/Slife/db20.slife"

ce qui retourne :

SQLite version 3.4.0
Enter ".help" for instructions
sqlite>

On peut ensuite taper :

.databases

ce qui doit donner quelque chose de ce genre, modulo votre nom d'utilisateur :

seq  name             file                                                      
---  ---------------  ----------------------------------------------------------
0    main             /Users/patpro/Library/Application Support/Slife/db20.slife

Posons maintenant que vous souhaitiez supprimer tous les événements enregistrés dont le titre contient SuperJob.fr, car vous ne voulez pas que votre patron soupçonne que vous préparez votre départ.
La première étape pour ne pas faire de bêtise c'est de quitter Slife car être deux (Slife et vous) en train d'éditer la base de données au même instant pourrait être fâcheux. Après avoir quitté Slife, faites une copie de sauvegarde du fichier db20.slife.
La seconde étape consiste à afficher sans les détruire les événements ciblés. On utilise pour cela l'instruction SQL SELECT. Au prompt sqlite> tapez :

SELECT * FROM ZITEMRECORDED WHERE ZNAME LIKE "%SuperJob.fr%";

Après validation, vous allez obtenir un listing de tous les enregistrements qui contiennent "SuperJob.fr" dans le titre :

10|2478|1|2008|7|10|30|34.0|Safari||aide mobilité site:SuperJob.fr - Google Search
10|2479|2|2008|7|10|30|8.0|Safari||SuperJob.fr, numéro 1 de l’emploi en ligne
10|2480|1|2008|7|10|30|9.0|Safari||Bulletin Officiel de SuperJob.fr n° 2002-2

Lisez bien tous les titres pour vérifier que vous n'allez pas supprimer des événements qui ne devraient pas l'être.
Si c'est bon, vous pouvez lancer le DELETE :

DELETE FROM ZITEMRECORDED WHERE ZNAME LIKE "%SuperJob.fr%";

Vous pouvez, à l'issue de ce DELETE, refaire le SELECT pour vérifier qu'il ne reste rien. Mais il n'y a aucune raison qu'un enregistrement ait échappé au DELETE.

Ensuite, vous quittez SQLite en tapant au prompt .quit, puis vous pouvez relancer Slife et vérifier que les enregistrements incriminants ont disparu.

Pour ceux qui sont désespérément allergiques au terminal, il existe une paire de clients graphiques pour accéder à des bases SQLite. J'ai testé rapidement SQLite Database Browser 1.3, et à première vue il donne satisfaction. Néanmoins il est compilé pour PowerPC uniquement. Je ne saurai garantir son fonctionnement sur plateforme Intel.

Related posts

Slife : le time tracking pour tous

slife-icone (c) slifelabsLe "time tracking" informatique est une notion importante pour de nombreuses personnes. Que vous soyez graphiste en agence de com' ou que vous soyez développeur freelance, surveiller et comptabiliser la manière dont vous utilisez votre temps de travail est souvent la clé de voute de votre facturation ou de celle de votre employeur. Il n'est jamais aisé de savoir combien de temps on a passé réellement sur tel ou tel projet, dans telle ou telle application, ou quels documents nous ont demandés le plus long travail.
Bien sûr, il existe des d'applications dédiées à ce genre de comptabilité. En voici une, gratuite et fonctionnant aussi bien sur Mac OS X que sur Windows : Slife 2.0.

Slife 2.0 est une application pleine de promesses, et d'une apparente simplicité. En réalité, elle est plus complexe à prendre en main que son interface pourrait le faire penser. Par ailleurs, il faut le souligner dès maintenant, il lui manque des fonctions importantes, voire essentielles, pour s'adapter à nos manières de travailler.

fenetre de slife : suivi des applications

Slife vous permet de suivre l'utilisation de presque toutes vos applications, de vos documents, et votre utilisation d'internet. Par défaut, l'historique est conservé un an, et la mise à jour se fait toutes les cinq secondes. Slife permet en plus de suivre l'utilisation de votre machine sous la forme d'activités, définies par vous. Chaque activité que vous créez peut regrouper des applications, des documents, et des URL. Je peux, par exemple, définir une activité "Mail", pour la quelle je ne vais suivre que l'utilisation de l'application Mail. Je peux aussi créer une activité "Lecture des news", pour la quelle je vais suivre l'utilisation de mon agrégateur RSS, de mon lecteur de newsgroups, et de l'URL http://news.google.fr/.

C'est dès maintenant que les premières limitations de Slife se font sentir. Il est impossible de tracker l'utilisation d'une même application dans deux activités différentes. Par exemple, vous développez du code PHP dans BBEdit. Vous souhaitez savoir combien de temps au total vous passer à coder, et combien de temps en particulier vous passez sur un projet donné de développement. Il faudra malheureusement choisir l'un ou l'autre, car activer le suivi de BBEdit dans la seconde activité, le désactivera dans la première.

De même, il est possible de suivre votre temps de travail sur un document d'après son nom, mais pas d'après le nom du dossier parent. Donc malheureusement, si les documents de deux projets portent le même nom (flyer.psd, index.php, ...) il sera impossible de les distinguer. Il est par contre possible de suivre l'utilisation des documents en précisant seulement une partie du nom. Si vous avez l'habitude de nommer vos documents avec un identifiant de projet (flyer_8652.psd, template_8652.ai, bat_8652.pdf...), il est alors très simple de créer une activité qui va tracker votre travail sur ces documents. Il suffit de définir une activité pour ce projet numéro 8652, et d'y associer un document "8652". Slife va suivre tous les documents que vous éditez et dont le nom contient "8652", quelque soit l'application utilisée.

Le tracking des documents d'un même dossier dans le cadre d'une activité est une fonction à l'étude chez Slifelabs, car de nombreux utilisateurs la réclament. Néanmoins, aucune date de disponibilité n'est annoncée, et toutes les ressources de Slifelabs ont été dédiées au portage vers Windows de la version 2 du logiciel.

En terme d'ergonomie, Slife est capable du meilleur comme du pire, malheureusement. Le meilleur, c'est le menu qui permet à tout moment, et dans toutes les applications d'ajouter le document ou l'application de premier plan à une des activités existantes. Il est possible aussi d'entrer dans un mode "privé", qui interrompt le tracking. Le pire, ce sont les différentes fenêtres de l'application, qui ne supportent pas le glisser-déposer, qui manquent de menus contextuels, voire même de cohérence.
Par ailleurs, notez bien que la fenêtre d'édition des activités est une fenêtre trompeuse. La liste des documents et URL est une liste globale. Si vous supprimez ou modifiez un document de cette liste, il sera supprimé ou modifié dans toutes les activités.

Slife propose en plus un mode connecté, Slife Teams, pour suivre le travail de plusieurs collaborateurs via une interface web. Cette option n'est actuellement accessible qu'après inscription auprès de Slifelabs. Si je suis retenu pour tester Slife Team, je ferais un second article.

Pour conclure, Slife est une application pleine de potentiel, mais encore très immature. Elle mérite qu'on lui porte de l'intérêt et qu'on fasse des retours enthousiastes à ses développeurs, mais son déploiement dans un contexte où les workflows sont bien rodés ne sera pas toujours possible. J'espère que les principales limitations seront abolies par les versions suivantes. Néanmoins, si vous n'êtes pas intéressés par le tracking d'activités complexes, Slife vous suffira largement.

Pour :

  • gratuite
  • (très) faible consommation de resources
  • prise en main rapide
  • développeurs à l'écoute, via les forum de slifelabs

Contre :

  • pas de tracking pour les dossiers
  • pas de tracking pour certaines applications (UT2004 par exemple)
  • interface vraiment perfectible
Related posts

Recevoir les mails de periodic sous Mac OS X Server 10.5

Les BSDistes de tout poil sont habitués aux emails envoyés chaque nuit, chaque semaine, et chaque mois à l'issue du lancement des scripts periodic. Sous Mac OS X, le résultat de ces scripts en par défaut renvoyé dans les fichiers /var/log/daily.out /var/log/weekly.out et /var/log/monthly.out. Néanmoins, l'administrateur avisé aura tôt fait de les diriger vers son mail en utilisant un fichier /etc/periodic.conf.local comme celui-ci :

daily_output=root
weekly_output=root
monthly_output=root

La formule fonctionne parfaitement pour FreeBSD ou Mac OS X 10.4, mais pas pour Mac OS X Server 10.5.4. Launchd semble présenter un bug qui l'empêche de gérer la création du mail post-periodic. On lit alors cette erreur dans /var/log/system.log :

Jul 29 03:17:42 myserver com.apple.launchd[1] (com.apple.periodic-daily[...]):
  Stray process with PGID equal to this dead job: PID ... PPID 1 sendmail

C'est fâcheux, mais ne nous laissons pas abattre, car il existe une solution. Contrairement à ce qu'on peut lire à droite et à gauche, il ne faut pas modifier la configuration de Postfix, et laisser les références à Cyrus tranquilles. La solution est plutôt du côté de launchd. Certains ont mis en évidence que le mail sera bien généré si au lieu d'exécuter simplement le periodic, on exécute en plus et juste après une petite pause.
Après quelques tests, j'ai trouvé que c'est une solution assez satisfaisante. Sur le plan fonctionnel elle est parfaite, mais elle n'est pas idéale, car elle impose de modifier des fichiers fournis par Apple. Donc cette correction est susceptible d'être perdue au détour d'une mise à jour du système.

J'ai choisi de modifier les plist de launchd correspondant aux lancements de periodic :

[edit] : En réalité, la modification des plists com.apple.periodic* n'a pas donné le résultat escompté sur le terrain. Sur mon serveur de test, les mails de periodic étaient bien envoyés, mais sur mes serveurs de production, 3 machines sur 4 n'ont pas réussi à envoyer les mails pour le daily. Par ailleurs, le nombre d'erreurs dans les log système a sensiblement augmenté.

J'ai donc décidé de restaurer les fichiers com.apple.periodic* dans leur état d'origine et de modifier à la place la commande periodic. J'ai renommé /usr/sbin/periodic en /usr/sbin/periodic_orig, puis j'ai créé un script shell nommé /usr/sbin/periodic :

#!/bin/bash 
/usr/sbin/periodic_orig $@ 
sleep 1

Ainsi, le lancement par launchd de la commande `periodic daily` va en réalité lancer `/usr/sbin/periodic_orig daily` (donc le script periodic original), puis va lancer `sleep 1`, ce qui suffit à launchd pour pouvoir générer le mail de résultat de periodic.

J'ai comme l'impression qu'avec launchd, on n'a pas fini d'en baver...

Related posts