0

我正在尝试编写一个脚本,该脚本将通过网络获取日志并解析它们以获取相关信息并执行一些操作(如果存在严重问题,则发送电子邮件,如果出现警告,只需写入日志文件)。我正在使用带有 syslogd 的 AIX 机器来处理日志。现在它像往常一样执行,将所有日志写入文件......很多文件。

有人建议我使用 Perl 和命名管道来实现脚本。我刚刚花了一些时间阅读命名管道,我发现它们非常有趣。但是,对于在这种情况下信息的“流”应该如何工作以及如何让 perl 处理它,我感到很困惑。

例如,我是否应该在脚本之外创建一个 fifo 并告诉 syslogd 默认写入它并让我的脚本在另一端解析它?Perl 能做到这一点吗?(对你的系统管理员来说)这是一个聪明的/可能的选择吗?

这是我第一次接触 Perl 和命名管道。

4

1 回答 1

1

您当然可以在 Perl 中创建一个命名管道,尽管在我看来,对于您正在尝试做的事情,最好按照您的建议在 perl 之外创建命名管道,然后让 syslogd 写入它,并且从 perl 读取管道。

我不太了解 AIX,但这可以用于创建管道(source):

mkfifo -p /var/adm/syslog.pipe

要让 syslogd 写入它,请在以下位置定义/var/adm/syslog.pipe

   *.info                        |/var/adm/syslog.pipe 

然后:

kill -HUP `cat /var/run/syslogd.pid`

你也可以把所有这些东西放到你的 perl 脚本中:如果管道不存在或者 syslogd 没有使用它,脚本会为你安排所有需要的东西。

如果您需要更多帮助,您可能可以提供更多关于您正在尝试做的事情的详细信息。

于 2011-07-25T16:03:16.650 回答