监控服务器脚本:

将恶意攻击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. Ribbon远程调用

    Ribbon是客户端的负载均衡机制,它有几种负载均衡机制.默认是轮询,我们也可以自定义规则.通过合理的分配网络请求来减小服务器的压力.项目都是注册到eureka服务器上.通过ribbon去调用其他服务 ...

  2. MySQL5.7 慢查询+DDL操作堵塞查询

    数据库版本: mysql> select @@version; +------------+ | @@version | +------------+ | 5.7.26-log | +----- ...

  3. 10-js对象、数组

    # js对象 ```1.使用原始的方式创建内置对象 var myObject = new Object(); myObject.name = “lijie”; myObject.age = 20; m ...

  4. Python2视频教程

    目录 1. 说明 1.1. 马哥视频_修复v1 1.2. 马哥视频_修复v2 2. 目录 3. 下载链接 1. 说明 Python从入门到精通视频(全60集)马哥教育视频(已修复部分视频无声音的问题+ ...

  5. eclipse 代码提示快捷键 alt+/

    eclipse (ALT+/)1.选择Eclipse菜单栏中的Window->preferences: 2.选择General->keys; 3.在右侧中间的窗体中点击word compl ...

  6. [POJ 1390] Blocking

    问题描述 Some of you may have played a game called 'Blocks'. There are n blocks in a row, each box has a ...

  7. 二叉树的下一个结点(剑指offer_8)

    题目描述 给定一个二叉树和其中一个结点,请找出中序遍历顺序的下一个结点并返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. public class TreeLinkNode { i ...

  8. Jmeter参数化控件意见收集

    1.可以读取EXCEL,可以自定义SHEET,行和列: 2.数据可以加密传输,加密方式如下: 1)SHA1 2)SHA224 3)SHA256 4)SHA384 5)SHA512 6)MD5 7)Hm ...

  9. [AGC001E]BBQ Hard 组合数学

    题目描述 Snuke is having another barbeque party. This time, he will make one serving of Skewer Meal. He ...

  10. [WC2012]记忆中的水杉树

    https://www.luogu.org/problemnew/show/P4125 题解 首先一开始所有的线段互不相交. 那么对于第二问来说,一定存在一种方法使得所有线段都朝着一个方向动. 比如说 ...