使用tcpdump 对nginx的access.log 非400的ip进行自动抓包
#抓取nginx access日志不是 400 的行,找出该ip ,并且启动抓包
#该脚本的执行要放在 crond 里面或者 while循环里面
##################
#网卡名称
net_card=enp0s8
#最多抓取10条记录
cap_max_ip_num=1
#要抓取ip的在nginx里面的错误
#存放抓包的目录
cap_dir="/tmp/cap_dir/"
if [ ! -d "$cap_dir" ]; then
mkdir "$cap_dir"
fi
#当前已经开始抓包的ip地址
cap_ip_history_file="$cap_dir/___tcp_dump_ip"
if [ ! -f "$cap_ip_history_file" ]; then
touch "$cap_ip_history_file"
fi
function mytcpdump()
{
ip=$1
tcpdump -i $net_card -w $cap_dir/file${ip}.cap host $1 &
}
function begin_capture()
{
count_line=`wc -l $cap_ip_history_file | awk '{print $1}'`
if [ $count_line -ge $cap_max_ip_num ];then
echo " capture max limit !!"
exit 1
fi
ip=`tail -1 access.log |awk '{if($(NF-4)==400) print $1}'`
echo "access the log is " $ip
if [ "$ip" != "" ]; then
grep_result=`grep "$ip" $cap_ip_history_file `
if [ "$grep_result" == "" ]; then
echo "begin tcp dump " $ip
echo `date` $ip >> $cap_ip_history_file
mytcpdump $ip
fi
fi
}
function clean()
{
rm -rf $cap_dir
}
case "$1" in
start)
begin_capture
;;
clean)
clean
;;
*)
echo $"Usage: $0 {start|clean}"
exit 1
esac
使用tcpdump 对nginx的access.log 非400的ip进行自动抓包的更多相关文章
- Nginx 的 access log 如何以 json 形式记录?
Nginx 的 access log 默认是以空格分隔的字符串形式记录的,格式如下 log_format proxy '[$time_local] $remote_addr ' '$protocol ...
- nginx的access.log文件详解
事实证明,日志文件真的是很重要很重要的.能够帮助我们快速的定位问题,并且知道用户访问的状态,浏览器,Ip,接口地址等,简直可怕.. 一.nginx的access.log(1)对博主而言,日志文件存放在 ...
- Nginx修改access.log日志时间格式
一.修改原因 因为要获取nginx访问信息,作为开发的数据使用,但是nginx的access.log文件中的默认的时间格式是这样的: [02/Nov/2017:20:48:25 +0800] 而要求的 ...
- 在nginx日志access log可以记录POST请求的参数值
1) 在nginx日志access log可以记录POST请求的参数值 实现程度:日志中可以显示POST请求所提交的参数值 问题: 日志中文显示十六进制(在配置文件中配置中文也无效) 没有对 ...
- shell定时统计Nginx下access.log的PV并发送给API保存到数据库
1,统计PV和IP 统计当天的PV(Page View) cat access.log | sed -n /`date "+%d\/%b\/%Y"`/p |wc -l 统计某一天的 ...
- nginx的access.log 和 error.log
nginx 常用的配置文件有两种: access.log 和 error.log access.log 的作用是 记录用户所有的访问请求,不论状态码,包括200 ,404,500等请求,404,500 ...
- 利用logrotate切割nginx的access.log日志
一.新建一个nginx的logrotate配置文件 /var/log/nginx/access.log { daily rotate compress delaycompress missingok ...
- nginx的access log按小时生成
1.在server或location段进行配置 if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})&q ...
- tcpdump指定IP和端口抓包
如下指定抓www.baidu.com 并且80端口的包 保存到test.cap 可以在Windows下面用wireshark打开 tcpdump 'port 80 and host www.baidu ...
随机推荐
- Rsync文件同步机备份工具使用
一,Rsync简介 Rsync是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步的优秀工具.适用于多种操作平台. 全称是Remote synchronization 具有可使本地和远 ...
- 使用response来控制浏览器的缓存
缓存这个技术在我们实际的开发中是非常常用的,也是非常重要的一项技术.主要用于客户端(浏览器)向服务器端请求的是一些比较大的数据,并且这个数据在短时间内不会经常发生变化的情况,比如一些网站的logo图片 ...
- 购物车 cookie session
0-服务器识别用户的目的:服务器存有不同用户的信息,而对这些信息,服务器自身.网站开发管理者.网站访问者会对其读写: 1-暂且存入服务器数据库,购物车分为2种表:购物车入车表和购物车下单表: 2-单个 ...
- jquery插件网址
各种分布图的插件:http://echarts.baidu.com/demo.html
- Supervisor快速上手指南(转)
原文:http://maemual.me/index.php/archives/8/ Supervisor是一个进程控制程序.用于监控管理你需要的程序. 当你有一个程序,需要长期在后台运行,并且希望能 ...
- 一条SQL引起的雪崩
1.问题描述 MySQL服务器卡死,CPU飚到300%多,命令执行缓慢. 2.问题定位 踩了狗屎运,直接找到了问题缘由 发现了一条SQL写的模糊匹配,将%写在了关键字的前面,这样会造成查询不使用索引, ...
- WCF服务对于处理客户端连接的一点思考
对于每个客户端的,服务端是否为每个客户端有专门的“通道”? 目的:想在服务端记录下来客户端的访问记录(进入.各个操作.离开等信息),并将其执行的操作独立记录在各个客户端对应的日志中. 下面是代码: 契 ...
- Sping-Spring JDBC框架
JDBC框架概述 在使用普通的JDBC数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关闭数据库连接等.但Spring JDBC框架负责所有的底层细节,从开始打开连接,准备和执行SQL语句,处理 ...
- Git添加本地项目出现fatal: unable to get credential storage lock: File exists
把本地项目初始化之后上传到github上出现问题:fatal: unable to get credential storage lock: File exists 解决办法:是因为我上传用的git帐 ...
- matplotlib对LaTeX数学公式的支持
Matlplotlib对LaTeX有一定的支持,如果记得使用raw字符串语法会很自然: xlabel(r"x2y4x2y4") 在matplotlib里面,可以使用LaTex的命令 ...