rsyslog – 不同的IP地址的日志?

我们的networking遍布各地的设备。 我想要做一些事情:

pool1 {192.168.1.1-192.168.1.20,192.168.1.50} pool2 {192.168.1.21-192.168.1.40,192.168.1.66}

如果从pool1执行此操作

如果从pool2那么做

这样,我可以使Mac的日志看起来像Mac日志,Linux日志看起来像Linux日志,思科日志看起来像思科日志等。我只是没有find任何具体足够的谷歌search。

如果你有一个相当新的版本的rsyslog ( 最新版本的包可以在他们的网站上find ),那么你应该可以使用一个数组进行比较,如这里所解释的。 就像是:

if $fromhost-ip == [ "192.168.1.1", "192.168.1.2"... ] then { action(...do this...) } 

虽然从控制结构文档看来,它应该更像是:

 if $variable in [array] 

如果你有很大的范围,你应该能够用一个像这样的foreach结构填充一个局部variables。 你可以find更多关于脚本的信息,如果你search文档“RainerScript”

这适用于我:

 # accept logging for remote hosts on a per-ip-address basis $template DirectoryPerHost,"/var/log/REMOTEHOSTS/%fromhost-ip%/%syslogfacility-text%.log" if ( ( $fromhost-ip != "127.0.0.1" ) and ( $fromhost-ip != "::1" ) ) then { ?DirectoryPerHost } else { whatever you want to do with local log files here } 

还有其他variables可以用来代替from-ip – 请参阅Radu链接到的更多文档。

Radu是正确的,你需要一个最近的rsyslog来完成这个。

如果您被困在RHEL6或其重build之一中,则可以使用操作系统提供的rsyslog7软件包来代替默认(旧)rsyslog。 默认版本不支持这种语法,但v7。