我正在尝试编写一个脚本,它将通过网络获取日志并解析它们以获取相关信息并执行某些操作(如果存在严重问题则发送电子邮件,如果有警告,只需写入日志文件)。我正在使用带有syslogd的AIX机器来处理日志。现在,它像往常一样运行,将所有日志写入文件......很多文件。
我被建议使用Perl和Named Pipes来实现脚本。我刚刚花了一些时间阅读命名管道,我发现它们非常吸引人。但是,我很难理解信息的“流动”在这种情况下应该如何工作以及如何使perl处理它。
例如,我应该在脚本之外创建一个fifo并告诉syslogd默认写入它并让我的脚本在另一端解析吗? Perl可以这样做(对你来说系统管理员)这是一个聪明/可能的选择吗?
这是我第一次遇到Perl和命名管道。
答案 0 :(得分:1)
你肯定可以创建一个named pipe in 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没有使用它,脚本会为您安排所有必需的东西。
如果您需要更多帮助,可能会提供更多关于您要做什么的详细信息。