监控服务器脚本:

将恶意攻击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. 本地局域网MySQL数据库连接方法(Navcat权限设置)

    情景: 当同一局域网环境中,需要协同开发并涉及到本地数据库互联情况,有关权限需要开放! 设置流程: 1.受访端连接 打开Navcat>>>>点击本地数据库>>> ...

  2. jquery点击按钮弹出图片

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  3. Python subprocess ffmpeg

    # -*- coding:utf-8 -*- import os, sys, getopt import numpy as np import subprocess as sp import cv2 ...

  4. Linux系统Docker启动问题Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service"

    在Liunx中使用Docker, 注: Liunx使用的是在虚拟机下的centOS7版本在刚开始安装Docker时没有任何错误, 但是在后续的docker启动过程中, 出现以下问题: [root@zk ...

  5. python基础--内置函数map

    num_1=[1,2,10,5,3,7] # num_2=[] # for i in num_1: # num_2.append(i**2) # print(num_2) # def map_test ...

  6. git@github.com出现Permission denied (publickey)

    上传项目的时候出现Permission denied (publickey)这个问题 解决方案如下: 看本地的.git/config设置的仓库url地址和github使用的链接地址是否一致如下图,如u ...

  7. 外媒:Apple面临着印度iPhone的停用

    据外媒报道:印度电信管理局(TRAI)制定遏制令人讨厌的消息的新规则可能导致印度数百万部iPhone的停用. 该监管机构本周早些时候宣布了“2018年电信商业通信客户偏好规定”,根据该规定,它已提议“ ...

  8. Cobaltstrike系列教程(二)-Listner与Payload生成 heatlevel

    0x000-前文 Cobaltstrike系列教程(一)简介与安装 0x001-Listner(监听器)介绍 ①Cobaltstrike listner简介 可能有一些小白并不理解什么叫做listne ...

  9. Java 13 在win10 安装及配置

    java 13 SDK 下载 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk13-downloads-5672538 ...

  10. Task2.设立计算图并自动计算

    1.numpy和pytorch实现梯度下降法 import numpy as np # N is batch size; N, D_in, H, D_out = 64, 1000, 100, 10 # ...