Je nach Zeit zwei verschiedene / etc / Hosts

11

Ich versuche, eine Produktivitätssuite für mich selbst zu erstellen. Mein erstes Ziel ist es, Facebook, Gmail und Stackexchange von 09:00 bis 16:00 Uhr zu blockieren.

Ab sofort habe ich meine bearbeitet /etc/hostsund 0.0.0.0 www.facebook.com und ähnliche für Google Mail und Stackexchange hinzugefügt.

Aber ich bin ein wenig verwirrt darüber, wie ich die Blockierungsdauer in mein Skript aufnehmen soll.

Was ich dachte, sind 2 verschiedene Dateien (hosts_allow, hosts_block) und dann cp hosts_allow hostsoder cp hosts_block hostsje nach Zeit, aber dann müsste dies in eine Endlosschleife gestellt werden oder etwas, von dem ich nicht wirklich sicher bin, ob es der beste Weg ist, das Problem anzugehen .

Irgendwelche Hinweise?

Ulrich Dangel
quelle
Aber ... Aber StackExchange verbessert die Produktivität! :(
kba
@KristianBorupAntonsen, nicht, wenn ich versuche, multivariable Kalkül zu lernen: P
1
math.SE ist immer hilfreich! :)
kba

Antworten:

19

Verwenden Sie cron.

Sagen Sie crontab -e als root - oder sudo crontab -ewenn Sie sudoeingerichtet haben - und fügen Sie Folgendes in die Datei ein, die im Texteditor angezeigt wird:

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

Dies besagt, dass in der nullten Minute der 9. und 16. Stunde eines jeden Tages des Monats /etc/hostsmit den angegebenen Shell-Befehlen überschrieben wird.

Vielleicht möchten Sie tatsächlich etwas Komplizierteres:

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

Diese eine Änderung - 1-5die fünfte Position - besagt, dass der Wechsel zwischen Arbeits- und Spielzeit nur von Montag bis Freitag stattfindet.

Sagen Sie man 5 crontab, um eine vollständige Erklärung zu erhalten, was Sie in einer crontabDatei alles tun können .

Übrigens habe ich die Namen Ihrer hostsDateien oben geändert , weil sie von TCP-Wrappernhosts_allow zu nahe kommen .hosts.allow

Warren Young
quelle
9
+1 zum Ändern des Dateinamens, um die Ähnlichkeit von tcpwrappern zu verringern. Ich würde auch vorschlagen ln -f, nicht cp- es ist zu leicht zu vergessen, dass Änderungen, /etc/hostsdie zweimal am Tag gelöscht werden sollen, und Software, die geändert /etc/hostswird, es sowieso nicht wissen. Mit lnhaben Sie mindestens eine dauerhafte Kopie der Änderungen (je nachdem, welche aktiv ist).
Alexios
@Alexios: Kein Argument da.
Warren Young
3

Wenn Sie zwei verschiedene hostsDateien haben, können Sie einfach einen Cron-Job planen, um die Datei /etczu einer bestimmten Stunde während des Tages zu überschreiben .

R ..
quelle