J'ai essayé de configurer launchd pour bloquer plusieurs sites web sous OS X 10.11.6.
En /etc/hosts
La liste est modifiée à intervalles réguliers, mais un navigateur peut toujours accéder aux sites bloqués.
Un autre comportement étrange est que launchd semble exécuter les commandes lorsque je charge la plist, mais n'exécute pas les commandes pendant l'heure prévue.
En cherchant sur Internet, j'ai découvert que je devais peut-être réinitialiser le cache DNS :
sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder
Lorsque je l'exécute depuis la ligne de commande, je peux toujours accéder aux sites qui devraient être bloqués. Je ne sais pas non plus comment ajouter cela aux arguments du programme launchd plist si cela devait fonctionner.
$ cat /Library/LaunchDaemons/local.hosts.blockingAM.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>local.hosts.blockingAM</string>
<key>ProgramArguments</key>
<array>
<string>cp</string>
<string>/etc/hosts_BLOCKED_sites.txt</string>
<string>/etc/hosts</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartCalendarInterval</key>
<array>
<dict>
<key>Hour</key>
<integer>8</integer>
<key>Minute</key>
<integer>15</integer>
<key>Weekday</key>
<integer>1</integer>
</dict>
<dict>
<key>Hour</key>
<integer>8</integer>
<key>Minute</key>
<integer>15</integer>
<key>Weekday</key>
<integer>2</integer>
</dict>
<dict>
<key>Hour</key>
<integer>9</integer>
<key>Minute</key>
<integer>35</integer>
<key>Weekday</key>
<integer>3</integer>
</dict>
<dict>
<key>Hour</key>
<integer>8</integer>
<key>Minute</key>
<integer>15</integer>
<key>Weekday</key>
<integer>4</integer>
</dict>
<dict>
<key>Hour</key>
<integer>8</integer>
<key>Minute</key>
<integer>15</integer>
<key>Weekday</key>
<integer>5</integer>
</dict>
</array>
<key>StandardErrorPath</key>
<string>/tmp/local.hosts.blocking.err</string>
<key>StandardOutPath</key>
<string>/tmp/local.hosts.blocking.out</string>
</dict>
</plist>
Voici les permissions :$ ls -la /Library/LaunchDaemons/local.hosts.blockingAM.plist
-rw-r--r--@ 1 root wheel 1474 Sep 8 09:33 /Library/LaunchDaemons/local.hosts.blockingAM.plist
Je charge le plist avec :
$ sudo launchctl load /Library/LaunchDaemons/local.hosts.blockingAM.plist
Aucune erreur n'est enregistrée :$ cat /tmp/local.hosts.blocking.err
Voici le fichier contenant les sites bloqués :$ cat /etc/hosts_BLOCKED_sites.txt
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
# Blocked sites redirected to 0.0.0.0
0.0.0.0 reddit.com www.reddit.com
0.0.0.0 facebook.com www.facebook.com
Qu'est-ce que je fais de mal ?