我正在编写一个bash脚本来完成以下任务。
1.脚本每五分钟运行一次wget,以便从静态URL下载一个小日志。
1.脚本使用diff来查看日志文件中是否有任何新条目(新条目在日志文件的末尾生成)。
1.如果发现新的日志条目-将新条目提取到新文件中,正确格式化它们,向我发送警报,返回到#1。
1.如果没有找到新的日志条目,则返回到#1。
wget "https://url-to-logs.org" -O new_log
if diff -q new_log old_log; then
echo "no new log entries to send."
else
echo "new log entries found, sending alert."
diff -u new_log old_log > new_entries
# some logic i have to take the output of "new_entries", properly format the text and send the alert.
rm -rf old_log new_entries
cp new_log old_log
rm -rf new_log
fi
还有一件事--每晚午夜托管日志的服务器删除所有条目并显示一个空白文件,直到为新的一天生成新的日志条目。
我想我总是可以在午夜运行一个cron作业来运行“rm -rf”和“touch”old_log文件,但我很好奇是否存在更简单的方法来做到这一点。
提前感谢您的任何/所有意见和帮助。
1条答案
按热度按时间lrl1mhuk1#
If your logs are not rotating - i.e. the old log is guaranteed to be the prefix of the new log, you can just use
tail
to get the new suffix - something like this:If there are no new lines in
new_log
, thenew_entries
file will be empty, which you can check usingstat
or some other way.If your logs are rotating, you should first use
grep
to check if the last line from the old log exists in the new log, and if not - assume the entire new log is new: