Deux / etc / hôtes différents selon l'heure

11

J'essaye de me faire une suite de productivité. Mon premier objectif est de bloquer Facebook, Gmail et Stackexchange de 0900 à 1600.

À partir de maintenant, j'ai édité mon /etc/hostset ajouté 0.0.0.0 www.facebook.com et similaires pour gmail et stackexchange.

Mais je suis un peu confus quant à la façon d'inclure la durée de blocage dans mon script.

Ce que je pensais, c'est avoir 2 fichiers différents (hosts_allow, hosts_block), puis cp hosts_allow hostsou en cp hosts_block hostsfonction du temps, mais cela devrait être mis dans une boucle infinie ou quelque chose dont je ne suis pas vraiment sûr est la meilleure façon d'aborder le problème.

Des indices?

Ulrich Dangel
la source
Mais ... Mais StackExchange améliore la productivité! :(
kba
@KristianBorupAntonsen, pas quand j'essaie d'apprendre le calcul multivariable: P
1
math.SE est toujours utile! :)
kba

Réponses:

19

Utilisez cron.

Dites en crontab -e tant que root - ou sudo crontab -esi vous l'avez sudoconfiguré - et mettez ce qui suit dans le fichier qui apparaît dans l'éditeur de texte:

0  9 * * * cp /etc/hosts_worktime /etc/hosts
0 16 * * * cp /etc/hosts_playtime /etc/hosts

Cela signifie qu'à la minute zéro des 9e et 16e heures de chaque jour du mois, écrasez en /etc/hostsutilisant les commandes shell données.

Vous pourriez en fait vouloir quelque chose d'un peu plus compliqué:

0  9 * * 1-5 cp /etc/hosts_worktime /etc/hosts
0 16 * * 1-5 cp /etc/hosts_playtime /etc/hosts

Ce seul changement - mettre 1-5en cinquième position - indique que le changement entre le travail et le temps de jeu ne se produit que du lundi au vendredi.

Dites man 5 crontabpour obtenir une explication complète de tout ce que vous pouvez faire dans un crontabfichier.

Soit dit en passant, j'ai changé les noms de vos hostsfichiers ci-dessus, car ils hosts_allowsont trop proches de ceux hosts.allowutilisés par TCP Wrappers .

Warren Young
la source
9
+1 pour changer le nom de fichier pour réduire la similitude de tcpwrappers. En outre, je suggère ln -f, non cp- il est trop facile d'oublier que tout changement à /etc/hostssupprimer est supprimé deux fois par jour, et tout logiciel qui le modifie /etc/hostsne le sait pas de toute façon. Avec ln, vous aurez au moins une copie persistante des modifications (celle qui est active).
Alexios
@Alexios: Aucun argument là-bas.
Warren Young
3

Si vous avez 2 hostsfichiers différents , vous pouvez simplement planifier un travail cron pour écraser le fichier /etcà une heure spécifique de la journée.

R ..
la source