在一天中的特定时间进行本地重定向域(如 /etc/hosts)

Joh*_*tch 2 linux productivity hosts macos

伙计们。为了提高我的工作效率,我想在白天的时间段内有选择地阻止或重定向某些网站。我已经在我的 /etc/hosts 中完全阻止了一些站点,但是只有在特定时间段内处于活动状态才使我无法理解。

奖励:我还希望能够阻止主域,但允许其中的特定页面。例如,阻止 reddit.com,但允许 reddit.com/r/javascript

谢谢你的尽心帮助!

Flo*_*ris 5

虽然@smw 的答案看起来可能是您的解决方案,但没有什么比“自己动手”更合适的了——如果只是为了满足。

基于我上面的评论,我假设您可以创建一个 /etc/hosts 文件,为您提供所需的权限。我将像上面一样调用它们,worktimeHosts并且playtimeHosts. 现在您需要一个脚本来将一个或另一个设置为活动文件。这假设您已将 /etc/hosts 移开...

创建一个脚本:

#!/bin/bash
rm /etc/hosts
ln -s /etc/worktimeHosts /etc/hosts
Run Code Online (Sandbox Code Playgroud)

另存为/usr/bin/getWorking,设置权限执行chmod 755 /usr/bin/getWorking

现在创建第二个脚本:

#!/bin/bash
rm /etc/hosts
ln -s /etc/playtimeHosts /etc/hosts
Run Code Online (Sandbox Code Playgroud)

将其另存为 /usr/bin/getPlaying,像以前设置权限

您必须确保您有权对 /etc 中的文件执行这些操作...

现在编辑cron表格(参见此处的示例)

`crontab -e`
Run Code Online (Sandbox Code Playgroud)

添加如下一行:

00 00 08 * * /usr/bin/getWorking
Run Code Online (Sandbox Code Playgroud)

另一行是这样的:

00 00 17 * * /usr/bin/getPlaying
Run Code Online (Sandbox Code Playgroud)

我认为这将接近解决方案 - 但我还没有测试过这个,所以玩它并找出我的错误......