Jsem sám rodič a myslím, že každý rodič musí posoudit své dítě podle jeho individuálních vlastností. Ano, chcete mu dát zodpovědnost, ale jsou výjimky a každá situace je jiná.
Vyvinul jsem níže uvedenou sérii skriptů, když přišel můj synovec na návštěvu. Zůstal vzhůru příliš pozdě, což odvádělo pozornost mých (mladších) dětí. Rozhodl jsem se, že večer vypneme YouTube a ráno ho znovu zapneme. Upozorňuji, že toto je daleko od dokonalého systému. Konkrétně, jakákoli videa přehrávaná během běhu skriptu budou pokračovat a pokud má prohlížeč / zařízení cache IP, nebude to bránit dalším videím. Musíte s tím pracovat se svým firewallem (a já to dělal, ale je to mimo rámec tohoto příspěvku).
Tento postup vyžaduje SSH do vašeho pihole (nebo běží z konzoly) a úpravu několika souborů. Pokud nejste jistí, jak to udělat, jsou k tomu pokyny jinde. Nejsem si vědom žádného způsobu, jak to udělat přes webovou konzolu. Vše dělám z kořenového účtu na pihole.
Mám textový soubor nazvaný “block_domains.txt” v adresáři /root/ na pi. Vypadá takto:
# seznam domén, které chcete blokovat pomocí skriptu pihole_block.sh
# a které budou odblokovány pomocí pihole_unblock.sh
# YouTube domény
www.youtube.com
m.youtube.com
googlevideo.com
ytimg.l.google.com
ytimg.com
youtu.be
roblox.com
web.roblox.com
Mám bash skript nazvaný pihole_block.sh v adresáři /root/, který vypadá takto:
#!/bin/bash
# blokovat adresy v pihole zadané příkazovým řádkem
# pro ladění
#set -x
PATH="$PATH:/usr/local/bin/"
pihole_command="/usr/local/bin/pihole -b"
pihole_update="/usr/local/bin/pihole -g"
while IFS='' read -r line || [[ -n "$line" ]]; do
# pokud je řádek prázdný nebo má #, přeskočit
if [[ ! "$line" = *[!\ ]* ]] || [[ "$line" =~ \#.* ]]; then
continue
fi
# echo "pihole blokuje $line"
$pihole_command $line >/dev/null
done < "$1"
$pihole_update >/dev/null
Mám bash skript nazvaný pihole_unblock.sh v adresáři /root/ který vypadá takto:
#!/bin/bash
# odblokovat adresy v pihole zadané příkazovým řádkem
# pro ladění
#set -x
PATH="$PATH:/usr/local/bin/"
pihole_command="/usr/local/bin/pihole -b -d"
pihole_update="/usr/local/bin/pihole -g"
while IFS='' read -r line || [[ -n "$line" ]]; do
# pokud je řádek prázdný nebo má #, přeskočit
if [[ ! "$line" = *[!\ ]* ]] || [[ "$line" =~ \#.* ]]; then
continue
fi
# echo "pihole odblokuje $line"
$pihole_command $line >/dev/null
done < "$1"
$pihole_update >/dev/null
Pokud tyto soubory uložíte do adresáře /root/, je třeba je změnit na spustitelné.
chmod u+x /root/pihole_block.sh
chmod u+x /root/pihole_unblock.sh
Kdykoli chci, aby pihole blokoval domény z souboru block_domains, spustím:
/root/pihole_block.sh /root/block_domains.txt
a kdykoli je potřeba je odblokovat:
/root/pihole_unblock.sh /root/block_domains.txt
Jako lenoch, který chce, aby to jen na noc vypnulo, mám to naplánováno v crontabu. Spusťte
crontab -e
A vložte řádky jako tyto:
30 22 * * * /root/pihole_block.sh /root/block_domains.txt
30 5 * * * /root/pihole_unblock.sh /root/block_domains.txt
Ty říkají “v 22:30 (22:30 v noci), každý den, spusť /root/pihole_block.sh /root/block_domains.txt” a další řádek říká “v 5:30 (5:30 ráno), každý den, spusť /root/pihole_unblock.sh /root/block_domains.txt”
Pokud máte nějaké otázky, rád na ně odpovím, ale toto je spíš technické řešení a může být obtížné, pokud neznáte příkazovou řádku. Hodně štěstí!