Ubuntu 16.04LTS 在 cron.daily 中创建 Cron Job,将 auth.log 的内容显示到每个用户主目录中的文件夹中?

Ubuntu 16.04LTS 在 cron.daily 中创建 Cron Job,将 auth.log 的内容显示到每个用户主目录中的文件夹中?

Ubuntu 16.04 LTS 用户

大家好,我是这里的新手,我一直在这些论坛和谷歌上搜索,但无果。我的搜索没有找到我需要的具体信息。

这是我的个人项目,旨在帮助我习惯设置每日/每月/任何时间运行的系统作业和脚本。

我已经(低效地)为 Ubuntu 机器上的 10-12 个用户创建了几个文件夹,我希望将这个作业放到这些文件夹中。它位于他们的主目录中名为“ulogs”的文件夹中。我希望在这个文件夹中存放我创建的各种系统范围的作业,为系统上的每个用户保存文件。

我知道这个作业将在 cron.daily 中作为脚本创建。我知道我想运行它的频率,也许某个时候是一天两次,但现在我会从一天一次开始。

在脚本中,将作业的内容/最终结果保存到我创建并选择要保存作业 txt 文件的文件夹中的协议是什么?

对于这项工作,我想保存 auth.log 的内容(cron 脚本基本上是“cat /var/log/auth.log > /home/Users(1-12)/ulogs/daily-signin.txt”)

我可以使用哪些变量,而不是输入每个用户的用户名和应该保存文件的文件夹路径。

我还想将日期附加到文件末尾,但我会自己想办法,不能让你们做所有的工作。我一直在寻找,但我从一个网站跳到另一个网站,并没有找到一种有效的方法将文件保存到每个用户文件夹路径。

请帮忙!

答案1

如果您以 root 身份运行以下程序,它将daily-signin.txt在所有用户主目录下的 ulogs 目录中创建一个名为的文本文件。

#!/bin/bash
path="/path/to/source/file";
for p in `cat "$path"`;
do
log=`cat /var/log/auth.log`;
mkdir -p /home/$p/ulogs/
echo "$log" >> /home/$p/ulogs/daily-signin.txt
done

注意事项

  1. 该文件/path/to/source/file包含您机器中的用户列表。如果创建了任何新用户,并且您还想获取该用户主目录中的日志文件,则必须在 source.txt 文件中添加新用户名。

  2. 由于此文件是在另一个用户的主目录中创建的,因此您需要使用以下命令运行此 shell 脚本sudo privileges

  3. 如果你以 cronjob 的方式运行此脚本,你可以按照链接才能完成此操作。

相关内容