拥有Cron伙伴总是好事!
我应一些朋友(不太熟悉Linux的朋友)的要求分享这篇文章。我觉得可以写一篇博客与大家共享。我们都曾从某个起点开始,有时会忘记并非每个人都是狂热的Linux用户。就像我还不是狂热的啤酒酿造师……(目前还不是!)
大约一个月前,我和几位老管理员朋友聊天,谈到了VPN的话题。大家都评论了在工作中和家里使用的VPN。OpenVPN被提及,因为它是一个优秀的软件解决方案,并且发现相当容易实施。其中一人提到,他们希望实施一个调度解决方案,以便在更新期间限制访问,并具有灵活性,只允许实习生在某些时间段访问。我们都对此大笑,但随后意识到他是认真的。这引发了一场关于每个人工作或曾经工作过的公司以及似乎伴随它们的繁文缛节的深入讨论。我提到过我喜欢BHIS吗?我认为如果有繁文缛节,它会在某个会议上与我们很棒的T恤一起分发。
继续战斗,我的朋友们,继续战斗! 回家后,我思考了关于限制访问和在OpenVPN解决方案中安排时间表的评论。出于某种原因,我有一个诅咒,导致我的思维对琐碎小事疯狂运行, somehow将其扭曲成挑战。我相信我的朋友们有时是故意这样做的,因为他们就是那么邪恶。我必须承认,他们想出的很多东西确实很琐碎,但有时它带来的挑战远不止解决一个方案,可能还包括其他问题的解决方案。
别问! 第二天,我决定进一步研究调度解决方案,因为我在家里的实验室安装了一个OpenVPN服务器。在OpenVPN网站上进行了一些研究后,我找到了禁用用户访问以及暂停其账户的命令行语法。以下命令是在OpenVPN网站上找到的:https://docs.openvpn.net/docs/access-server/openvpn-access-server-command-line-tools.html#session-management
禁止用户的命令行语法(OpenVPN服务器)
断开用户连接的命令行语法(OpenVPN服务器) 现在我知道了命令行语法,是时候创建一个bash脚本,以便稍后调用它来断开和禁止用户。注意,断开用户命令有一个很好的附加功能,可以让你给他们一个断开连接的原因。
在我过去的生活中,我曾为一家印刷电路板的合同制造商工作,包括计算机主板、电话设备、SCSI控制器、医疗设备等。大多数功能台测试都是通过cron作业完成的,因为几乎总是测试的第一部分是将时间设置为默认值(再次通过脚本),以便捕获测试所需的时间,并利用它来确定是否存在传播延迟问题,尤其是在CPU和内存时序中。因此,我们会运行bash脚本在特定时间点启动各种测试。这在发现设备总线速度的时序问题方面非常有效,并且似乎是当时最容易实施的方式。现在我相信有更好的方法来做这件事。
创建一个bash脚本非常简单。通过SSH登录,升级到root(sudo su),然后创建一个目录来存放你的bash脚本。然后cd进入该目录。需要root访问权限,因为运行OpenVPN脚本需要它。
|
|
然后使用VI或Nano创建bash脚本的名称(例如 vi discbanuser.sh 或 nano discbanuser.sh)。这将在当前目录中打开一个名为discbanuser.sh的空白文件。
|
|
然后输入以下信息,为了运行命令,你必须位于下面的脚本目录中。这是一个与你刚创建的目录不同的目录。
断开并禁止用户的批处理脚本 现在我们有了用于断开和禁止用户从OpenVPN连接的批处理脚本,让我们创建另一个Bash脚本来解禁或允许他们再次连接到VPN服务器。这将在与discbanuser.sh相同的~/scripts目录中创建,我们将其称为unbanuser.sh。
允许用户连接到VPN的Bash脚本 我们现在已经创建了bash脚本,因此是时候确保这些文件的权限正确以便执行。注意是:ls –(小写L)。
|
|
注意文件不允许执行,所以我们需要更改这一点。
|
|
现在bash脚本可执行了,我们可以使用crontab来安排它们。 Crontab,或者你可能听说过它们作为Cron Job或Cron。是Linux的调度器。所有Linux用户都曾将它们用于一个或多个任务,因为它可用于安排重启、更新和各种其他任务。有一个简短有趣的阅读,关于一个人创建了不同的脚本来自动化他最平凡的任务,可以在这里找到:https://what.thedailywtf.com/topic/17997/now-that-s-what-i-call-hacker 事实上,我仍在等待BHIS给我们一个可以连接到网络的咖啡机……。
继续… 我有一个运行中的OpenVPN虚拟机,要安排任务,只需键入以下命令:
|
|
这将打开当前用户的crontab文件,-e的意思就是这个。 crontab文件提供了关于使用什么语法的信息,如下所示:
调用Bash脚本的Crontab文件 如文件所示,我已经放置了对我的discbanuser.sh和unbanuser.sh脚本的调用。这些任务将分别在一周的第一天晚上10:00和10:30运行。现在我们可以保存文件,然后检查它是否工作。 我以ricktest身份登录到VPN,这是我之前创建的一个用户。我等待消息到达,告诉我已从服务器断开连接。
我收到了断开连接的消息,以及我在bash脚本命令中包含的消息。那工作得很好。 现在尝试再次连接到VPN服务器:
正是预期的结果! 然后在脚本解禁账户后再次测试,我再次能够登录。 尽管这是一个简单的例子,但希望它能给那些Linux新手和我的朋友们一个进入crontab世界的立足点。如你所见, scheduled tasks和bash脚本的用途是无限的。 确保查看本博客前面提到的链接,以获取更多有趣和高级的例子。