如何在 raspbian 中设置条件 cron 作业

如何在 raspbian 中设置条件 cron 作业
If (SYSTEM_IP != SOME_IP)
       sudo openvpn client.ovpn
ELSE
       exit


频率 - 每 5 分钟在 Linux Shell 中执行

我需要这个任务,因为我的 raspberry pi 可能会失去互联网连接几个小时,从而将其与 openvpn 服务器断开连接。我不允许编辑 openvpn 连接配置文件,我尝试设置一个 cron 作业,每五分钟将我的机器连接到服务器一次,但我想使用条件语句对其进行优化。

这项作业应该在我的 raspi 上每 5 分钟运行一次,如果 pi 的 ip 地址不等于给定的 ip,则意味着 pi 没有连接到 openvpn 服务器上的我的私有网络,因此它应该使用 sudo openvpn client.ovpn 命令连接到 openvpn 服务器,否则它应该退出 cron 作业。

如果您有其他方法可以检查主板是否已连接到 openvpn,如果没有,则连接到它,我将不胜感激。

答案1

cron 任务必须全部在一行中,因此

/5 * * * * ip addr show | fgrep --quiet SOME_IP || sudo openvpn client.ovpn

每 5 分钟/5 * * * *

crond 运行ip addr show并将输出传递给 fgrep

fgrep检查SOME_IP输出 ip addr show

如果未找到则fgrep返回 1 并||导致sudo openvpn client.ovpn运行

相关内容