linux 查看日志文件 封禁今日请求过多的ip

该脚本用于检查日志文件中请求服务超过19次的IP,对比历史记录,新增的IP将被封禁并记录到相应文件中,使用iptables进行IP阻止操作。

 查今日日志文件禁ip

主要内容为:(封禁ip脚本处理 在最下方)

        1、查看今日请求服务ip次数大于19次的ip(防止误封自己)

        2、 查出的ip和厉害保存的ip对比,拿出新增加的ip

        3、对ip进行处理,执行封禁ip脚本处理

        4、写入封禁ip文件,并写入日志

#!/bin/bash

DATE=$(date +%Y/%m/%d%t%H:%M:%S)
DayTime=$(date +%Y/%m/%d)

if [ ! -f ip.log ]
then
    touch  ip.log
fi


ipStr=""
function getIpStr(){
echo $ipStr
    while read lineIp
    do
      ipStr=${ipStr}${lineIp}" "
   done <  add_ip.log
}

cat /var/log/nps.log |grep ${DayTime} |grep "port 22"| awk '{print $12}'|awk -F[:" "]+ '{print $1}'|sort | uniq -c |awk '{if ($1  > 19) {print $2} }' > tmp_ip.log &&
[ -s tmp_ip.log ] &&
echo "比对历史数据" &&
grep -v -f ip.log tmp_ip.log > add_ip.log &&
[ -s add_ip.log ] &&
echo "增加过滤ip内容" && getIpStr && sh ~/ip_deny.sh ${ipStr} &&
cat add_ip.log >> ip.log &&
echo -e "\n====>记录时间: "${DATE}"<<====" >> log_ip.log &&
cat add_ip.log >> log_ip.log &&
#rm -f  tmp_ip.log &&
echo "ip处理完成"

 ip_deny.sh  (ip封禁脚本)

#!/bin/bash

echo "-- \$* 封禁ip操作 ---"
for i in "$@"; do
    iptables -I INPUT -s $i -j DROP
    echo "封禁ip:"$i
done

Linux系统中,查看动态日志和错误分析定位是系统管理和故障排查的核心技能。以下是常用的命令和工具,涵盖日志查看、实时监控、错误过滤和分析方法: --- ### **1. 基础日志文件位置** Linux系统的主要日志文件通常位于 `/var/log/` 目录下,常见日志包括: - **`/var/log/syslog`**:通用系统日志(Ubuntu/Debian)。 - **`/var/log/messages`**:通用系统日志(CentOS/RHEL)。 - **`/var/log/auth.log`**:认证日志(如SSH登录、sudo操作)。 - **`/var/log/kern.log`**:内核日志(硬件、驱动相关)。 - **`/var/log/dmesg`**:内核启动日志(硬件检测)。 - **`/var/log/nginx/` 或 `/var/log/apache2/`**:Web服务器日志。 - **`/var/log/secure`**:安全日志(CentOS/RHEL的认证日志)。 --- ### **2. 实时查看日志(动态监控)** #### **(1) `tail -f`** 实时跟踪日志文件末尾的新增内容,常用于监控动态日志: ```bash tail -f /var/log/syslog ``` - **`-n 50`**:显示最后50行(可调整): ```bash tail -n 50 -f /var/log/nginx/error.log ``` #### **(2) `less` + `Shift+F`** 类似 `tail -f`,但支持翻页和搜索: ```bash less /var/log/syslog ``` 进入后按 `Shift+F` 进入实时跟踪模式,按 `Ctrl+C` 退出。 #### **(3) `journalctl`(Systemd系统)** Systemd系统的日志管理工具,支持实时监控和过滤: ```bash # 实时查看所有日志 journalctl -f # 查看特定服务的日志(如Nginx) journalctl -u nginx -f # 查看内核日志 journalctl -k -f ``` --- ### **3. 日志过滤与错误分析** #### **(1) `grep` 过滤关键词** 从日志中提取包含特定关键词的行(如错误、异常): ```bash # 查找包含"error"的日志 grep "error" /var/log/syslog # 忽略大小写 grep -i "failure" /var/log/auth.log # 显示匹配行及后3行(上下文) grep -A 3 "error" /var/log/nginx/error.log ``` #### **(2) `awk` 提取特定列** 按列提取日志中的关键信息(如时间、IP、状态码): ```bash # 提取Nginx日志中的IP和状态码 awk '{print $1, $9}' /var/log/nginx/access.log # 统计错误出现的次数 grep "error" /var/log/syslog | awk '{print $2}' | sort | uniq -c ``` #### **(3) `sed` 格式化日志** 替换或删除日志中的冗余信息: ```bash # 删除包含"debug"的行 sed '/debug/d' /var/log/syslog # 替换时间戳格式 sed 's/\[.*\]//' /var/log/nginx/error.log ``` --- ### **4. 高级日志分析工具** #### **(1) `logrotate`** 管理日志轮转,防止日志文件过大: ```bash # 查看logrotate配置 cat /etc/logrotate.conf # 手动触发日志轮转 logrotate -f /etc/logrotate.d/nginx ``` #### **(2) `multitail`** 同时监控多个日志文件(需安装): ```bash sudo apt install multitail # Debian/Ubuntu sudo yum install multitail # CentOS/RHEL # 同时监控syslog和nginx错误日志 multitail /var/log/syslog /var/log/nginx/error.log ``` #### **(3) `lsof` 查看被占用的日志文件** 检查哪个进程正在写入日志文件: ```bash lsof /var/log/syslog ``` --- ### **5. 错误定位实战示例** #### **场景1:分析Web服务器500错误** ```bash # 1. 查看Nginx错误日志 tail -n 100 -f /var/log/nginx/error.log # 2. 过滤500错误并统计频率 grep "500" /var/log/nginx/error.log | awk '{print $7}' | sort | uniq -c # 3. 结合访问日志分析请求路径 grep "500" /var/log/nginx/error.log | awk '{print $7}' | xargs -I {} grep {} /var/log/nginx/access.log ``` #### **场景2:排查SSH登录失败** ```bash # 1. 查看认证日志 grep "Failed password" /var/log/auth.log # 2. 统计失败IP grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr # 3. 封禁恶意IP(使用iptables) sudo iptables -A INPUT -s 192.168.1.100 -j DROP ``` --- ### **6. 日志归档与压缩** 长期保存日志时,建议归档和压缩: ```bash # 打包并压缩旧日志 sudo tar -czvf syslog_backup_$(date +%Y%m%d).tar.gz /var/log/syslog* # 清空当前日志(谨慎操作) sudo > /var/log/syslog ``` --- ### **总结** | 需求 | 命令/工具 | 示例 | |--------------------|-----------------------------------|-------------------------------------------| | 实时监控日志 | `tail -f`、`journalctl -f` | `tail -f /var/log/nginx/error.log` | | 过滤错误关键词 | `grep`、`awk` | `grep "error" /var/log/syslog` | | 多日志同时监控 | `multitail` | `multitail /var/log/syslog /var/log/nginx/error.log` | | 系统日志管理 | `journalctl`、`logrotate` | `journalctl -u nginx --since "2024-01-01"` | | 分析Web错误 | `grep` + `awk` 组合 | `grep "500" /var/log/nginx/error.log | awk '{print $7}'` | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值