Zwei verschiedene /etc/hosts je nach Zeit

Zwei verschiedene /etc/hosts je nach Zeit

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

Ab jetzt habe ich meins bearbeitet /etc/hostsund 0.0.0.0 www.facebook.com und ähnliche für Gmail und Stackexchange hinzugefügt.

Ich bin jedoch etwas verwirrt, wie ich die Sperrdauer in mein Skript einbinden kann.

Ich dachte daran, zwei verschiedene Dateien zu haben (hosts_allow, hosts_block) und dann cp hosts_allow hostsoder cp hosts_block hostsje nach Zeit, aber dann müsste dies in eine Endlosschleife oder so etwas gesetzt werden, und ich bin nicht wirklich sicher, ob das der beste Weg ist, das Problem anzugehen.

Irgendwelche Hinweise?

Antwort1

Verwenden cron.

Sagencrontab -e als root— oder sudo crontab -ewenn Sie sudoes eingerichtet 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 bedeutet, dass in der nullten Minute der 9. und 16. Stunde jedes Tages im Monat /etc/hostsmit den angegebenen Shell-Befehlen überschrieben werden muss.

Vielleicht möchten Sie es eigentlich etwas komplizierter:

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

Diese eine Änderung – 1-5an der fünften Stelle – besagt, dass der Wechsel zwischen Arbeitszeit und Freizeit nur von Montag bis Freitag stattfindet.

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

Übrigens habe ich die Namen Ihrer hostsDateien oben geändert, da hosts_allowsie zu ähnlich sind zu hosts.allow, verwendet vonTCP-Wrapper.

Antwort2

Wenn Sie zwei unterschiedliche hostsDateien haben, können Sie einfach einen Cron-Job planen, um die Datei /etczu einer bestimmten Tageszeit zu überschreiben.

verwandte Informationen