我们的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。