将 OpenVPN 客户端连接添加到 cron

将 OpenVPN 客户端连接添加到 cron

我编写了简单的服务器-客户端 OpenVPN 配置文件:

服务器配置文件

dev tun0
ifconfig 10.8.0.1 10.8.0.2

客户端配置文件

dev tun0
ifconfig 10.8.0.2 10.8.0.1
remote 192.168.0.123

它基本上是一个明文 OpenVPN 隧道 - 现在对我来说还可以,我只是从基础开始学习,重点是 - 耶,它有效!:)

我还编写了一个简单的 bash 脚本来自动运行客户端:

#!/bin/bash
openvpn --config client.conf

并另存为run.sh。然后,想将其添加到cron以允许客户端在我需要的时候连接到 vpn 服务器。

我做到了:

crontab -e
11 5 * * * /home/mirx/run.sh

但我在服务器端没有看到任何连接的客户端 - 我的 cron 条目是否有效?在客户端端,tun当我使用 检查时,没有看到任何新界面ifconfig。有什么想法吗?

答案1

更新

您的脚本必须使用配置文件的完整路径,因为 cron 守护程序不以您的用户身份运行(也不从您的主目录运行)。

#!/bin/bash
openvpn --config /home/mirx/client.conf

另外,请确保你正在编辑 root 的 cronjob,因为你需要 root 才能连接到 openvpn 网络

更新 2

另外,似乎你可能混淆了你的 corn 语法,有这个标题可以帮助你进行设置:

#minute (0-59),
#|      hour (0-23),
#|      |       day of the month (1-31),
#|      |       |       month of the year (1-12),
#|      |       |       |       day of the week (0-6 with 0=Sunday).
#|      |       |       |       |       commands

旧答案

我建议在末尾放置与号(&)以确保它在后台运行:

11 5 * * * /home/mirx/run.sh &

这样,您就可以检查它是否正在运行,或者在需要时终止它ps ax | grep 'run.sh'

此外,如果您在脚本中使用任何变量(如 $HOME 或相对路径),run.sh它将不起作用,因为 cron 是作为单独的用户运行的,通常无法访问大多数环境变量。

相关内容