监控服务器脚本:

将恶意攻击IP地址加入黑名单

1、分割日志

使用os.system 执行操作系统命令,使用重定向来分割日志

2.获取访问ip

读日志文件,获取访问ip记录,使用字符串.split来获取访问ip

3.将恶意攻击ip加入黑名单

把所有访问ip加入到list,判断次数,如果超过200,加入黑名单os.system('iptables -I INPUT 1-p tcp -s %s -j DROP'%)

4.每分钟执行一次

time.sleep(60)

5.循环

while true

time模块:

import time
time_now=time.strftime('%Y%m%d%H%M%S')
print(time_now)
import os, time

while True:
ip_list = [] # 存放所有ip的列表
src_log = '/opt/lampp/logs/access_log' # 源日志
new_log = '/opt/lampp/logs/access_log_%s' % time.strftime('%Y%m%d%H%M')
# 新日志的文件名
os.system('cat {s_log} > {n_log} && > {s_log}'.format(s_log=src_log, n_log=new_log)) # 分割每分钟的日志
with open(new_log) as fr: # 打开日志文件
for line in fr: # 循环文件每一行的内容
ip = line.split('-')[0].strip() # 分割字符串,获取ip地址
ip_list.append(ip) # 把所有的ip地址加入到iplist中
for ip in ip_list: # 再循环整个iplist
if ip_list.count(ip) > 20: # 判断ip出现次数是否大于2的加入黑名单
os.system('iptables -I INPUT 1 -p tcp -s %s -j DROP' % ip)
# 执行操行系统命令,把ip地址加入黑名单
for i in range(ip_list.count(ip)):
ip_list.remove(ip) # 从ip_list中把已经加入黑名单的ip全部删掉
time.sleep(60)

将监控服务器脚本做成一个功能函数,直接调用,入参是日志路径

#监控访问日志函数
import os, time
def log_agent(log_name):
while True:
ip_list = [] # 存放所有ip的列表
src_log = log_name # 源日志
new_log = '%s,%s'%(src_log) % time.strftime('%Y%m%d%H%M')
# 新日志的文件名
os.system('cat {s_log} > {n_log} && > {s_log}'.format(s_log=src_log, n_log=new_log)) # 分割每分钟的日志
with open(new_log) as fr: # 打开日志文件
for line in fr: # 循环文件每一行的内容
ip = line.split('-')[0].strip() # 分割字符串,获取ip地址
ip_list.append(ip) # 把所有的ip地址加入到iplist中
for ip in ip_list: # 再循环整个iplist
if ip_list.count(ip) > 20: # 判断ip出现次数是否大于2的加入黑名单
os.system('iptables -I INPUT 1 -p tcp -s %s -j DROP' % ip)
# 执行操行系统命令,把ip地址加入黑名单
for i in range(ip_list.count(ip)):
ip_list.remove(ip) # 从ip_list中把已经加入黑名单的ip全部删掉
time.sleep(60)
log_agen('日志路径')

监控服务器的脚本log_agent的更多相关文章

  1. shell编程-基础

    1.linux 下 Bash 程序开 1.1 怎样写 shell 脚本 1.使用编辑工具编辑shell 脚本,例如 vim,脚本名字一般用.sh 为后缀,不用.sh 为后缀 时编辑的内容为全黑,不会有 ...

  2. shell实现脚本监控服务器及web应用

    实际工作中我们需要知道部署在服务器上的应用有没有问题,但是人为的操作太麻烦有咩有简单的方式呢shell来监控我们服务器运行状态以及服务器上部署的应用,如果出现异常就会自动发送一个邮件给我们,开始搞起. ...

  3. Linux记录-shell实现脚本监控服务器及web应用

    1.apache web 服务器 1 2 3 4 5 6 7 8 9 10 !/bin/bash # 表示请求链接3秒钟,不要返回的测试数据 nc -w 3 localhost 80 &> ...

  4. python3小脚本-监控服务器性能并插入mysql数据库

    操作系统: centos版本 7.4 防火墙 关闭 selinux 关闭 python版本 3.6 mysql版本 5.7 #操作系统性能脚本 [root@localhost sql]# cat cp ...

  5. zabbix自定义脚本监控服务器端口状态

    zabbix可以通过客户端的[net.tcp.port[<ip>,port]]该item监控项来判断本地/远程服务器TCP端口是否正常,不过当时没有想起来,就用了自定义脚本去写的,很久没有 ...

  6. linux 监控服务器脚本

    #!/bin/bash ctime=`date +%x%T`monitor_dir=/home/jk/if [ ! -d $monitor_dir ]; then    mkdir $monitor_ ...

  7. PHP 监控服务器动态

    预期准备 一个139邮箱,收到邮件后,可以免费给你短信提醒.如果你不需要短信提醒功能,用什么邮箱都可以 另外一个可以运行PHP文件的Web服务器(相当于监控服务器),现在免费的PHP网站空间很多,上网 ...

  8. 借助mosquitto“实时”远程监控服务器数据库运行状态

    公司的项目还处于开发阶段,我把整个后台服务临时放在阿里云上供前端测试,用的阿里云的ECS云服务器,HTTP请求服务器和数据库服务都安装在一台机子上(穷啊,凑合用),做测试用,配置相当低:单核1Gb.其 ...

  9. shell脚本实例-系统监控

    shell脚本监控网站并实现邮件.短信报警shell进程监控脚本(发送邮件报警)Shell脚本监控服务器在线状态和邮件报警的方法 http://www.jbxue.com/jb/shell/ 11. ...

随机推荐

  1. 分布式唯一ID生成器

    在应用程序中,经常需要全局唯一的ID作为数据库主键.如何生成全局唯一ID? 首先,需要确定全局唯一ID是整型还是字符串?如果是字符串,那么现有的UUID就完全满足需求,不需要额外的工作.缺点是字符串作 ...

  2. Django:django-debug-toolbar模块

    简介: Django的django-debug-toolbar 模块是一组可配置的面板,可显示有关当前请求/响应的各种调试信息,并在单击时显示有关面板内容的更多详细信息. GitHub源文件下载地址 ...

  3. win32 socket编程(四)——服务器端实例(TCP)

    //Server服务器端Server.cpp 1 // 定义控制台应用程序的入口点. // #include "stdafx.h" #include <winsock2.h& ...

  4. mybatis复习笔记(1):

    一.简介:什么是MyBatis 1.MyBatis是一款优秀的持久层框架,支持定制化SQL.存储过程以及高级映射.MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集.MyBatis ...

  5. 前端校招知识体系之css

    本文将从以下四个方面展开介绍: 选择器 样式表继承 css3部分特性 BFC css选择器优先级策略 先附上个链接:css选择器参考手册 内联>id>class=属性选择器=伪类选择器&g ...

  6. CentOS7搭建Kafka单机环境及基础操作

    前提 安装Kafka前需要先安装zookeeper集群,集体安装方法请参照我的另一篇文档. Kafka安装 下载 wget https://archive.apache.org/dist/kafka/ ...

  7. union 横向组合

    select sum(zs) zs,sum(zl) zl,sum(ts) ts,sum(lxcbw) lxcbw,sum(bz) bz,sum(sfzqt) sfzqtfrom (select cou ...

  8. 02tensorflow非线性回归以及分类的简单实用,softmax介绍

    import tensorflow as tf import numpy as np import matplotlib.pyplot as plt # 使用numpy生成200个随机点 x_data ...

  9. 将postgresql中的数据实时同步到kafka中

    参考地址:https://blog.csdn.net/weixin_33985507/article/details/92460419 参考地址:https://mp.weixin.qq.com/s/ ...

  10. 线程工具类 - CountDownLatch(倒计时器)

    CountDownLatch官方文档 一.原理 CountDownLatch是一个非常实用的多线程控制工具类.Count Down在英文中意为倒计时,Latch意为门闩,可以简单的将CountDown ...