Linux swatch
命令详解
一、命令简介
swatch
(Simple WATCHer)是一款日志监控工具,用于实时监视系统日志文件,并在检测到特定模式的日志时触发预定义的操作(如发送邮件、执行脚本等)。它适用于监控系统安全日志、应用程序日志、网络流量日志等。
swatch
主要基于Perl 编写,并使用正则表达式匹配日志内容,可以对日志文件进行高效的筛选、报警和处理。
二、命令语法
swatch [选项]
或者:
swatch --config-file <配置文件> --tail-file <日志文件>
三、命令选项
选项 | 作用 |
---|---|
--config-file <文件> | 指定 swatch 配置文件。 |
--tail-file <文件> | 指定要监视的日志文件。 |
--daemon | 以守护进程模式运行 swatch 。 |
--pid-file <文件> | 指定 swatch 进程 ID 文件。 |
--script-dir <目录> | 设置 swatch 存放临时脚本的目录。 |
--verbose | 输出详细信息。 |
--version | 显示 swatch 版本信息。 |
四、常见用法
1. 监视 /var/log/syslog
并输出匹配的日志
swatch --tail-file /var/log/syslog
此命令会持续监视 /var/log/syslog
,并在终端显示所有匹配的日志。
2. 使用配置文件启动 swatch
swatch --config-file /etc/swatch.conf --tail-file /var/log/auth.log
从 /etc/swatch.conf
读取规则,并监视 /var/log/auth.log
文件。
3. 后台运行 swatch
swatch --config-file /etc/swatch.conf --tail-file /var/log/messages --daemon
以守护进程模式运行 swatch
,监视 /var/log/messages
日志文件。
4. 在 swatch
监控到特定日志时发送邮件
可以在 swatch
配置文件中指定 mail
操作,例如:
watchfor /Failed password/
mail=root@localhost, subject="SSH Login Failure"
然后执行:
swatch --config-file /etc/swatch.conf --tail-file /var/log/auth.log
当检测到 Failed password
记录时,swatch
会发送邮件通知管理员。
5. 检测 SSH 登录失败并执行报警
在 /etc/swatch.conf
中添加:
watchfor /Failed password/
exec /usr/bin/say "Unauthorized login attempt detected"
运行:
swatch --config-file /etc/swatch.conf --tail-file /var/log/auth.log
当检测到 SSH 失败登录日志时,执行 /usr/bin/say
命令进行报警。
五、swatch
配置文件示例
创建 /etc/swatch.conf
并添加以下内容:
watchfor /Failed password/
echo bold red
mail admin@example.com, subject="SSH Login Failure Detected"
watchfor /error|fail|critical/
echo bold yellow
bell 3
该配置的作用:
-
监测
Failed password
,红色高亮输出,并邮件通知admin@example.com
。 -
监测
error
、fail
、critical
关键字,黄色高亮输出,并响铃 3 次。
启动 swatch
:
swatch --config-file /etc/swatch.conf --tail-file /var/log/auth.log
六、常见问题及解决方案
1. swatch: command not found
原因:未安装 swatch
。
解决方案:根据系统类型安装:
# Debian/Ubuntu
sudo apt install swatch
# CentOS/RHEL
sudo yum install swatch
# Arch Linux
sudo pacman -S swatch
2. 无法监视日志文件
原因:可能没有权限访问日志文件。
解决方案:
sudo swatch --config-file /etc/swatch.conf --tail-file /var/log/auth.log
3. 邮件未发送
原因:邮件服务未配置。
解决方案:确保系统安装并启用了 postfix
或 sendmail
:
sudo systemctl restart postfix
七、应用场景
-
安全监控:监视
/var/log/auth.log
,检测 SSH 登录失败、su
命令使用等异常行为。 -
系统运维:监视
/var/log/syslog
或/var/log/messages
,检测关键错误信息。 -
应用日志监控:对 Nginx、Apache、MySQL 日志进行实时分析,自动触发报警或执行自动修复措施。
八、总结
-
swatch
是一个实时日志监控工具,支持 模式匹配 并执行 报警、邮件通知、脚本执行等操作。 -
使用
--config-file
指定规则,结合--tail-file
监控日志。 -
配置文件支持 颜色高亮、邮件通知、命令执行 等操作。
-
适用于 安全日志监控、系统运维、应用日志分析 等场景。
这里是封面: