Dwa różne / etc / hosts w zależności od czasu

11

Staram się stworzyć pakiet produkcyjny dla siebie. Moim pierwszym celem jest zablokowanie Facebooka, Gmaila i Stackexchange od 0900 do 1600.

Na razie edytowałem mój /etc/hostsi dodałem 0.0.0.0 www.facebook.com i podobne dla Gmaila i Stackexchange.

Ale jestem trochę zdezorientowany, jak uwzględnić czas trwania blokady w moim skrypcie.

Pomyślałem, że mam 2 różne pliki (hosts_allow, hosts_block), a następnie cp hosts_allow hostslub w cp hosts_block hostszależności od czasu, ale wtedy trzeba będzie umieścić je w nieskończonej pętli lub coś, czego nie jestem pewien, czy to najlepszy sposób na rozwiązanie problemu.

Jakieś wskazówki?

Ulrich Dangel
źródło
Ale ... Ale StackExchange poprawia wydajność! :(
kba
@KristianBorupAntonsen, nie kiedy próbuję nauczyć się rachunku
1
math.SE jest zawsze pomocny! :)
kba

Odpowiedzi:

19

Zastosowanie cron.

Powiedz crontab -e jako root - lub sudo crontab -ejeśli sudoskonfigurowałeś - i umieść w pliku pojawiającym się w edytorze tekstu:

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

Oznacza to, że w zerowej minucie 9. i 16. godziny każdego dnia miesiąca nadpisuj, /etc/hostsużywając podanych poleceń powłoki.

Możesz chcieć czegoś bardziej skomplikowanego:

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

Ta jedna zmiana - umieszczenie 1-5na piątej pozycji - mówi, że zmiana między pracą a czasem gry ma miejsce tylko od poniedziałku do piątku.

Powiedz, man 5 crontababy uzyskać pełne wyjaśnienie wszystkiego, co możesz zrobić w crontabpliku.

Nawiasem mówiąc, zmieniłem nazwy twoich hostsplików powyżej, ponieważ hosts_allowsą zbyt blisko hosts.allow, używane przez Owijarki TCP .

Warren Young
źródło
9
+1 za zmianę nazwy pliku w celu zmniejszenia podobieństwa tcpwrappers. Sugeruję też, że ln -fnie cp- zbyt łatwo jest zapomnieć, że wszelkie zmiany należy /etc/hostsusuwać dwa razy dziennie, a każde oprogramowanie, które modyfikuje, i /etc/hoststak nie będzie wiedzieć. Dzięki lnbędziesz mieć co najmniej jedną trwałą kopię zmian (zależnie od tego, która jest aktywna).
Alexios
@Alexios: Brak argumentów.
Warren Young,
3

Jeśli masz 2 różne hostspliki, możesz po prostu zaplanować zadanie CRON, aby zastąpić plik /etco określonej godzinie w ciągu dnia.

R ..
źródło