Два разных / etc / hosts в зависимости от времени

11

Я пытаюсь сделать продуктивный набор для себя. Моя первая цель - заблокировать Facebook, Gmail и Stackexchange с 0900 до 1600.

На данный момент я отредактировал свой /etc/hostsи добавил 0.0.0.0 www.facebook.com и аналогичные для gmail и stackexchange.

Но я немного озадачен тем, как включить продолжительность блокировки в мой скрипт.

Я подумал, что у меня есть 2 разных файла (hosts_allow, hosts_block) и затем cp hosts_allow hostsили в cp hosts_block hostsзависимости от времени, но тогда это нужно будет поместить в бесконечный цикл, или что-то, в чем я не уверен, что это лучший способ решения проблемы.

Есть какие-нибудь подсказки?

Ульрих Дангел
источник
Но ... Но StackExchange повышает производительность! :(
kba
@KristianBorupAntonsen, не тогда, когда я пытаюсь изучить многовариантное исчисление: P
1
математика. всегда полезна :)
kba

Ответы:

19

Использование cron.

Скажите crontab -e как root - или, sudo crontab -eесли вы sudoнастроили - и поместите в файл, который появляется в текстовом редакторе, следующее:

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

Это говорит о том, что в нулевую минуту 9-го и 16-го часов каждого дня месяца перезаписывайте данные /etc/hostsс помощью команд оболочки.

Возможно, вы захотите чего-то более сложного:

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

Это одно изменение - размещение 1-5на пятой позиции - говорит о том, что смена времени работы и игры происходит только с понедельника по пятницу.

Скажем, man 5 crontabчтобы получить полное объяснение того, что все, что вы можете сделать в crontabфайле.

Кстати, я изменил имена ваших hostsфайлов выше, потому что hosts_allowэто слишком близко hosts.allow, используется TCP Wrappers .

Уоррен Янг
источник
9
+1 за изменение имени файла, чтобы уменьшить сходство tcpwrappers. Кроме того, я бы предположил ln -f, что нет cp- слишком легко забыть, что любые изменения /etc/hostsбудут удаляться два раза в день, и любое программное обеспечение, которое модифицирует /etc/hosts, не будет знать в любом случае. При наличии у lnвас будет хотя бы одна постоянная копия изменений (какая из них активна).
Алексиос
@ Алексиос: Там нет аргументов.
Уоррен Янг
3

Если у вас есть 2 разных hostsфайла, вы можете просто запланировать задание cron для перезаписи файла в /etcопределенный час в течение дня.

Р..
источник