Interdire l'accès à certains sites avec /etc/hosts

J'utilise depuis des années ce fichier dans lequel j'ai chargé une liste de sites peu recommandables, cf. https://doc.ubuntu-fr.org/hosts#utiliser_le_fichier_hosts_pour_bloquer_des_sites_web.

Pour ces sites, c'est permanent, donc une fois mis en place, c'est fini sauf à le mettre à jour de temps à autre pour en ajouter (et éventuellement en enlever).

 

De façon variable avec un script bash et anacron

Pour des ados qui sont un peu trop accros à certains sites (réseaux sociaux par exemple), il peut-être intéressant de les bloquer la semaine et de les autoriser le week-end. J'ai donc créé deux fichiers :

  • /etc/hosts-semaine
  • /etc/hosts-week-end

Voici un script bash que j'ai nommé switch-hosts.sh, déposé dans mon répertoire /home/$USER/bin pour réaliser la bascule :

#!/bin/bash
# bcag2 - touticphoto.fr - 2021 march
# Si le jours de semaine est samedi ou dimanche, cp /etc/hosts/hosts-week-end /etc/hosts
# Sinon cp /etc/hosts/hosts-semaine /etc/hosts
day_of_week=$(date +%A) if [ "$day_of_week" = "samedi" ] || [ "$day_of_week" = "dimanche" ]; then
cp /etc/hosts-week-end /etc/hosts
else
cp /etc/hosts-semaine /etc/hosts
fi

Il faut maintenant exécuter ce script, le PC n'étant pas un serveur, CRON ne convient pas mais https://doc.ubuntu-fr.org/anacron convient bien

Il suffit de lancer la vérification à chaque démarrage :

On ajoute donc dans le fichier /etc/anacrontab la ligne suivante en fin de fichier :

1  2  switchhosts  bash /home/<votre-nom-utilisateur>/bin/switch-hosts.sh

  • 1 permet de le lancer chaque jour,
  • 2 de le lancer 2 minutes après le démarrage (1 peut sans doute convenir)
  • switchhosts n'est qu'une étiquette
  • et le reste permet d'exécuter le script