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/hosts
und 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 hosts
oder cp hosts_block hosts
je 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 -e
wenn Sie sudo
es 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/hosts
mit 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-5
an 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 crontab
Datei tun können.
Übrigens habe ich die Namen Ihrer hosts
Dateien oben geändert, da hosts_allow
sie zu ähnlich sind zu hosts.allow
, verwendet vonTCP-Wrapper.
Antwort2
Wenn Sie zwei unterschiedliche hosts
Dateien haben, können Sie einfach einen Cron-Job planen, um die Datei /etc
zu einer bestimmten Tageszeit zu überschreiben.