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

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

Я пытаюсь создать себе пакет для повышения производительности. Моя первая цель — заблокировать Facebook, Gmail и Stackexchange с 09:00 до 16:00.

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

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

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

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

решение1

Использовать cron.

Сказатьcrontab -e как корень— или, 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-оболочки.

решение2

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

Связанный контент