1. #抓取nginx access日志不是 400 的行,找出该ip ,并且启动抓包
  2. #该脚本的执行要放在 crond 里面或者 while循环里面
  3. ##################
  4. #网卡名称
  5. net_card=enp0s8
  6. #最多抓取10条记录
  7. cap_max_ip_num=1
  8. #要抓取ip的在nginx里面的错误
  9. #存放抓包的目录
  10. cap_dir="/tmp/cap_dir/"
  11. if [ ! -d "$cap_dir" ]; then
  12. mkdir "$cap_dir"
  13. fi
  14. #当前已经开始抓包的ip地址
  15. cap_ip_history_file="$cap_dir/___tcp_dump_ip"
  16. if [ ! -f "$cap_ip_history_file" ]; then
  17.   touch "$cap_ip_history_file"
  18. fi
  19. function mytcpdump()
  20. {
  21. ip=$1
  22. tcpdump -i $net_card -w $cap_dir/file${ip}.cap host $1 &
  23. }
  24. function begin_capture()
  25. {
  26. count_line=`wc -l $cap_ip_history_file | awk '{print $1}'`
  27. if [ $count_line -ge $cap_max_ip_num ];then
  28. echo " capture max limit !!"
  29. exit 1
  30. fi
  31. ip=`tail -1 access.log |awk '{if($(NF-4)==400) print $1}'`
  32. echo "access the log is " $ip
  33. if [ "$ip" != "" ]; then
  34. grep_result=`grep "$ip" $cap_ip_history_file `
  35. if [ "$grep_result" == "" ]; then
  36. echo "begin tcp dump " $ip
  37. echo `date` $ip >> $cap_ip_history_file
  38. mytcpdump $ip
  39. fi
  40. fi
  41. }
  42. function clean()
  43. {
  44. rm -rf $cap_dir
  45. }
  46. case "$1" in
  47. start)
  48. begin_capture
  49. ;;
  50. clean)
  51. clean
  52. ;;
  53. *)
  54. echo $"Usage: $0 {start|clean}"
  55. exit 1
  56. esac

使用tcpdump 对nginx的access.log 非400的ip进行自动抓包的更多相关文章

  1. Nginx 的 access log 如何以 json 形式记录?

    Nginx 的 access log 默认是以空格分隔的字符串形式记录的,格式如下 log_format proxy '[$time_local] $remote_addr ' '$protocol ...

  2. nginx的access.log文件详解

    事实证明,日志文件真的是很重要很重要的.能够帮助我们快速的定位问题,并且知道用户访问的状态,浏览器,Ip,接口地址等,简直可怕.. 一.nginx的access.log(1)对博主而言,日志文件存放在 ...

  3. Nginx修改access.log日志时间格式

    一.修改原因 因为要获取nginx访问信息,作为开发的数据使用,但是nginx的access.log文件中的默认的时间格式是这样的: [02/Nov/2017:20:48:25 +0800] 而要求的 ...

  4. 在nginx日志access log可以记录POST请求的参数值

    1)      在nginx日志access log可以记录POST请求的参数值 实现程度:日志中可以显示POST请求所提交的参数值 问题: 日志中文显示十六进制(在配置文件中配置中文也无效) 没有对 ...

  5. shell定时统计Nginx下access.log的PV并发送给API保存到数据库

    1,统计PV和IP 统计当天的PV(Page View) cat access.log | sed -n /`date "+%d\/%b\/%Y"`/p |wc -l 统计某一天的 ...

  6. nginx的access.log 和 error.log

    nginx 常用的配置文件有两种: access.log 和 error.log access.log 的作用是 记录用户所有的访问请求,不论状态码,包括200 ,404,500等请求,404,500 ...

  7. 利用logrotate切割nginx的access.log日志

    一.新建一个nginx的logrotate配置文件 /var/log/nginx/access.log { daily rotate compress delaycompress missingok ...

  8. nginx的access log按小时生成

    1.在server或location段进行配置 if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})&q ...

  9. tcpdump指定IP和端口抓包

    如下指定抓www.baidu.com 并且80端口的包 保存到test.cap 可以在Windows下面用wireshark打开 tcpdump 'port 80 and host www.baidu ...

随机推荐

  1. Vue.js_础学习之DOM操作

    demo说明: 1.{{message}}                           --“Mustache” 语法(双大括号) 2.v-bind:属性名                   ...

  2. SaltStack数据系统-Pillar

    上一篇:SaltStack数据系统-Grains 使用saltstack进行配置管理可以使用pillar定义主机假如是Openstack修改了一下nova的密码就需要修改很多配置文件 pillar很安 ...

  3. ZOJ 3605 Find the Marble(dp)

    Find the Marble Time Limit: 2 Seconds      Memory Limit: 65536 KB Alice and Bob are playing a game. ...

  4. 简单安装与配置mysql数据库(绿色版)

    目录 绿色版下载 mysql绿色版(5.7版本的安装与配置) 绿色版下载: mysql官网下载地址:https://www.oracle.com/index.html mysql绿色版(5.7版本的安 ...

  5. Apache Samza - Reliable Stream Processing atop Apache Kafka and Hadoop YARN

    http://engineering.linkedin.com/data-streams/apache-samza-linkedins-real-time-stream-processing-fram ...

  6. 自建YUM仓库

    YUM主要用于自动安装.升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系. 要成功的使用YUM工具安装更新软件或系统,就需要有一个包含各种rpm软件包的repository(软件仓库),这个 ...

  7. [转发]SPRING MVC3.2案例讲解--SPRING MVC3的@ResponseBody和ResponseEntity

    在传统的开发过程中,我们的控制CONTROLL层通常需要转向一个JSP视图:但随着WEB2.0相关技术的崛起,我们很多时候只需要返回数据即可,而不是一个JSP页面. SPRING MVC3的@Resp ...

  8. LVS-DR 配置测试

    LVS Lvs体系结构 Lvs工作模式(3种) NAT-网络地址转换模式 当用户请求到达调度器时,调度器将请求报文的目标地址(即虚拟IP地址)改写成选定的Real Server地址,同时报文的目标端口 ...

  9. 百度NLP一面

    C++ :     1.拷贝构造函数和重载=符分别在什么情况下被调用,实现有什么区别 2.虚函数的目的,虚函数和模板类的区别,如何找到虚函数 常规算法: 1. 如何输出一个集合的所有真子集,递归和非递 ...

  10. SQL Server自定义字符串分割函数——Split

    我相信大部分人都碰到过,处理数据的时候,字段的值是以 ',' (逗号)分隔的形式,所以我也不能避免. 然后我才知道,sql 是没有类似于 C# 和 Javascript 这种分割字符串的方法.( Sp ...