我对 linux 比较陌生 - 如果解决方案简单/明显,请原谅我..
我正在尝试设置一个后台运行脚本,该脚本使用 awk 和 tail 监视某些关键字模式的日志文件,然后在这些关键字出现在日志文件中时使用 espeak 提供简化通知(使用 sysklogd)
该概念源自本指南
这是我正在尝试做的一个可怕的例子:
#!/bin/bash
tail -f -n1 /var/log/example_main | awk '/example sshd/&&/session opened for user/{system("espeak \"Opening SSH session\"")}'
tail -f -n1 /var/log/example_main | awk '/example sshd/&&/session closed/{system("espeak \"Session closed. Goodbye.\"")}''
tail -f -n1 /var/log/example_main | awk '/example sshd/&&/authentication failure/{system("espeak \"Warning: Authentication Faliure\"")}'
tail -f -n1 /var/log/example_main | awk '/example sshd/&&/authentication failure/{system("espeak \"Authentication Failure. I have denied access.\"")}'
第一个 tail 命令本身就可以完美运行;它监视定义的日志文件中的“示例 sshd”和“为用户打开的会话”,然后使用 espeak 说“正在打开 SSH 会话”。正如您在上面的摘录中所期望的那样,bash 脚本不会同时运行多个尾部(或者至少它在第一个尾部命令之后停止)。
我想我有几个问题:我应该如何设置这个脚本?在后台不断运行此脚本的最佳方法是什么 - 例如 init?是否有任何教程/文档可以帮助我?是否已经有类似的东西可供我使用?
谢谢,任何帮助将不胜感激 - 对不起,很长的帖子。