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
运行