根据时间不同有两个不同的 /etc/hosts

根据时间不同有两个不同的 /etc/hosts

我正在尝试为自己制作一套生产力套件。我的第一个目标是从 0900 到 1600 阻止 Facebook、Gmail 和 Stackexchange。

截至目前,我已经编辑/etc/hosts并添加了 0.0.0.0 www.facebook.com 以及 gmail 和 stackexchange 的类似内容。

但我对如何在脚本中包含阻塞持续时间感到有点困惑。

我的想法是有两个不同的文件(hosts_allow、hosts_block),然后cp hosts_allow hostscp 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 点的第 0 分钟,/etc/hosts使用给定的 shell 命令进行覆盖。

您实际上可能想要更复杂的东西:

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

如果您有 2 个不同的文件,您可以简单地安排一个 cron 作业在一天中的特定时间hosts覆盖该文件。/etc

相关内容