我只是想知道过滤 sshd 日志的最佳方法。问题是我使用 Nagios 和 Cacti 通过 SSH 监控我的机器。它们每 5 分钟连接一次,这会用大量条目堵塞我的日志文件,使得我很难快速“跟踪”以查看发生了什么。
我希望将我的监控用户(在特定 IP 上)的所有登录信息记录在单独的文件中。
理想情况下,我会避免安装 syslog-ng 或类似软件。我必须在各种 Ubuntu、CentOS 和 FreeBSD 机器(运行各种 OpenSSH 版本)上进行设置,因此如果我可以在不使用其他软件的情况下完成此操作,生活将变得更加轻松。
关于如何实现这一目标有什么建议吗?
谢谢!
答案1
你可以做这样的事情:
tail -f logfile | grep -v "some\.ip\.address\.to\.ignore"
或者
tail -f logfile | grep -v "some\.ip\.address\.to\.ignore.*user-name"
答案2
你可以像这样将系统日志文件传递给管道
mkfifo /var/log/pipes/pipe1
进而
使用脚本读取该内容,该脚本将删除您不想要的字符串,如下所示:
cat /var/log/pipes/pipe1 | grep -v "login from xxx.xxx.xxx" | while read LINE
do
echo $LINE >>/var/log/ssh.log
done
答案3
你可以尝试奥塞克,它有非常好的日志分析。
答案4
斯沃琪是一款出色的日志文件跟踪和过滤程序,甚至支持对线条进行着色。它还有一个 Debian/Ubuntu 软件包。