Utiliser pihole en ligne de commmande

Un Pihole à usage multiple

Pihole est un logiciel fantastique pour supprimer la publicité, le traçage et bloquer l’accès à des sites indésirables. Il peut aussi être utilisé pour bloquer l’accès à certain site de façon temporaire.

Trou noir dans lequel la publicité est envoyée par Pihole

Par exemple, pour ne pas être tenté d’aller surfer sur Twitter pendant les heures de travail, ou pour empêcher ses enfants de rester trop longtemps sur Youtube, il peut être utile de bloquer l’accès à ces sites uniquement à certaines heures.

L’interface web de pihole est peu pratique pour un tel usage. Il vaut mieux utiliser la ligne de commande et cron. Le programme pihole permet en effet d’ajouter et de supprimer des sites via la ligne de commande.

Le script

Voici donc un mini script pour ajouter ou supprimer des sites à la blacklist.

#!/bin/bash
                            set -e

                            readonly SCRIPTNAME=$(basename $0)
                            readonly PIHOLE=/usr/local/bin/pihole

                            readonly LIST='(^|\.)dailymotion\.com$
                            (^|\.)vimeocdn\.com$
                            (^|\.)vimeo\.com$
                            (^|\.)googlevideo\.com$
                            (^|\.)youtube\.(de|fr|be|com)
                            '

                            action () {
                            local action=$1
                            local del=""
                            if [[ "${action}" == "allow" ]]
                            then
                            del='--delmode'
                            fi
    $PIHOLE --regex $del -q "'"${LIST}"'"
                            }

                            readonly ARG1=$1
                            case "$ARG1" in
    block)
        action block
        ;;
    allow)
        action allow
        ;;
    *)
                            echo "Usage: $SCRIPTNAME {block|allow}" >&2
                            exit 3
        ;;
                            esac

Example de crontab

Pour autoriser uniquement l’accès aux sites entre 17 heure et 18:30 le week-end:

0 17 * * 1,2,3,4,5 /usr/local/bin/dynamic-regex-list.sh allow >  /dev/null 2>&1
30 18 * * 1,2,3,4,5 /usr/local/bin/dynamic-regex-list.sh block >  /dev/null 2>&1

Dans cet exemple, le script a été nommé dynamic-regex-list.sh et placé dans le répertoire /usr/local/bin/.