Ubiquity Edge Router 上的 CRON 作业用于修改 hosts 文件

Ubiquity Edge Router 上的 CRON 作业用于修改 hosts 文件

我正在尝试在我的 Ubiquity Edge Router 上设置一个 cron 作业,它将在工作日早上和晚上修改一次 hosts 文件,以在周一至周五上午 8 点到下午 7 点之间阻止各种网站。

我创建了两个 shell 脚本:

/config/scripts/set-blocking-hosts.sh
/config/scripts/set-default-hosts.sh

每行都有 2 行:

cp /etc/hosts.blocking /etc/hosts
/etc/init.d/dnsmasq restart

请注意,每个脚本中 cp 命令的第一行有所不同,以复制相应的文件(hosts.default 或 hosts.blocking)

如果我通过 ssh 进入路由器并直接运行这些脚本,它们就会按照我的要求运行,而且运行完美。

我无法使用 cron 按计划运行这些操作。

以下是我的 cron 条目:

0 8 * * 1-5 /config/scripts/set-blocking-hosts.sh
0 19 * * 1-5 /config/scripts/set-default-hosts.sh

到目前为止,我已经尝试使用crontab -e和添加这些条目sudo crontab -e,但似乎都没有起作用。

我查找了日志文件/var/log但找不到任何相关内容。

如果我运行此命令,ps -ef | grep cron | grep -v grep我会得到以下结果,表明 cron 正在运行。

root     490     1     0 Oct24 ?     00:00:09 /usr/sbin/cron

我不知道应该把 cron 条目放在哪里才能使作业运行,或者我是否需要重新启动路由器,或者某个地方是否关闭了某些东西,或者路由器是否不支持这种操作。

免责声明,我不是系统人员或 Linux 人员,因此大部分内容都是我通过研究和反复试验才弄清楚的。

任何帮助是极大的赞赏!

答案1

解决了

首先,sudo crontab -e虽然使用登录用户的 crontab -e 也可以实现这一点,但我不知道是否存在权限问题。

其次,需要修改 cron 条目以包含前导“sh”,如下所示:

0 8 * * 1-5 sh /config/scripts/set-blocking-hosts.sh
0 19 * * 1-5 sh /config/scripts/set-default-hosts.sh

最后,这可能只是我个人的问题——我已将路由器的时区从 UTC 改为 PST,但并未重启。虽然date会将本地时间显示为 PST,但我认为cron它仍基于 UTC 运行——如果我重启了路由器cron,也许就不需要重启路由器了。

相关内容