首页 > 编程语言 >Python小程序(三):自动读取secure文件,并封禁异常IP地址

Python小程序(三):自动读取secure文件,并封禁异常IP地址

时间:2022-08-23 14:03:05浏览次数:59  
标签:ip prohibit sheet secure xlsx Python Ip IP地址 print

Python小程序(三):自动读取secure文件,并封禁异常IP地址

Python小白编写的内容。欢迎大家指正。

#! python
# -*- coding:utf-8 -*-
# 时间:20220812
# 作者:ColoFly
# 转载请注明出处及作者

import os,re,time,datetime,openpyxl from collections import Counter sec_log = open(r'secure', 'r', encoding='utf-8') sec_line = sec_log.readlines() End_time = datetime.datetime(2033, 12, 31, 23, 59, 59) #循环结束时间 #正则表达式,用于匹配IP地址 IpRegex = re.compile(r'''( (\d{1,3}) #IP address A class \. (\d{1,3}) #IP address B class \. (\d{1,3}) #IP address C class \. (\d{1,3}) #IP address D class )''', re.VERBOSE) Col_A = 'A' #定义表格prohibit_ip列号 Col_B = 'B' #定义表格prohibit_time列号 if __name__ == '__main__': if os.path.exists('prohibit_ip.xlsx'): print('prohibit_ip.xlsx is exists') else: table = ["prohibit_ip", "prohibit_time"] wb = openpyxl.Workbook() sheet = wb.active sheet.title = "Ip_sheet" row = 1 for i in range(len(table)): sheet.cell(row, i+1, table[i]) wb.save(filename = "prohibit_ip.xlsx") print('prohibit_ip.xlsx created successfully') file_location = 'prohibit_ip.xlsx' #定义存放文件名称 workbook = openpyxl.load_workbook('prohibit_ip.xlsx') #加载表格簿 Ip_sheet = workbook.active #读取表格 while datetime.datetime.now() < End_time: #读取每一行中是否存在'Failed password',如果存在则循环这一行中内容查找IP地址。因为相关文件 #来自Linux /var/log/secure文件中,就不再使用IP模块进行IP地址校验。 file_location = 'prohibit_ip.xlsx' # 定义存放文件名称 workbook = openpyxl.load_workbook('prohibit_ip.xlsx') # 加载表格簿 Ip_sheet = workbook.active # 读取表格 Ip_list = {}
matches = [] for line in sec_line: if 'Failed password' in line: for Ip in IpRegex.findall(line): matches.append(Ip[0]) #print(matches) Ip_count = Counter(matches) print(Ip_count) for k,v in Ip_count.items(): #读取单元格 if k in Ip_list: print('Ok') continue else: #print('False') if int(v) > 3: print('iptables -A INPUT -p tcp -s ' + k + ' --dport 22 -j DROP') Ip_sheet[Col_A + str(Max_Row)] = k Ip_sheet[Col_B + str(Max_Row)] = datetime.datetime.now() workbook.save('prohibit_ip.xlsx') Max_Row = Ip_sheet.max_row + 1 Max_Col = Ip_sheet.max_column + 1 for Row in range(2, Max_Row): Ip_date = Ip_sheet[Col_A + str(Row)].value Ip_list.update({Ip_date: 1}) #print(Ip_list) #print(date1) time.sleep(5)

 

标签:ip,prohibit,sheet,secure,xlsx,Python,Ip,IP地址,print
From: https://www.cnblogs.com/ColoFly/p/16615881.html

相关文章

  • python基础——数据转换与运算符
    数据转换转换数据类型的作用input()接收用户输入的数据都是字符串类型,想得到整型该如何操作?转换数据类型即可,即将字符串类型转换成整型转换数据类型的函数函数说......
  • python yield的返回值
    初识yield表达式是在生成器学习中,只要函数中出现yield表达式,那么这个函数就是生成器函数。当函数执行到yield那一行时,yield就会返回后面的值,然后冻结当前函数状态,下行代码......
  • 基础之 - python数字转换为字符串
     问题:当需要将数字和字符串相加时,会报如下  解决:#1、数字转字符串a=12b='13'#1.1字符串格式化运算符#c='%d'%(a)+b#1.2使用str()函数#......
  • python综合训练二 图书管理系统
    宝安小学图书馆开馆了,准备开发一个图书管理系用json模拟数据库的方式完成下列业务:1、用户登录2、显示图书列表3、图书上架4、图书下架5、借书6、还书7.退出a.使用......
  • Ubuntu16.04安装python3.5并设置为默认版本
    综述:ubuntu16.04版本之后,系统会自带python2.7版本,如果需要下载新版本的python3.5,需要进行更新安装一、下载python3.5 首先在ubuntu的终端ternimal输入命令:sudoapt-get......
  • python函数及内置函数__init__自己的见解!!
    函数的定义方式(常见的三种)第一种,无参数defhanshu():  print("hanshu")hanshu()  #调用函数第二种,有参数,并把值传递给两个参数defhanshu(a,b):  print(......
  • c++和python混合编程,调用了CTP的附加库 (windows)(应该是全网第一篇)
    这是一个连接券商的代码,simnow提供的包,windows版,linux的话,下一篇文章介绍听起来就很复杂,所以需要大家有点功底,不懂的东西,多多百度,因为很多细节,我不可能还教怎么使用visual......
  • Centos7中升级python3.10.4版本
     ******先上结果图******   (之前是2.7.5版本,日志太长没法找到之前的版本截图了)******先上结果图****** 1、下载安装一些依赖包yuminstall-ywgetl......
  • python中的双斜杠//表示地板除,先除再取整
    Python中两个斜杠即双斜杠(//)表示地板除,即先做除法(/),然后向下取整(floor)。至少有一方是float型时,结果为float型;两个数都是int型时,结果为int型。 ......
  • python如何把逗号分割的字符串转存列表?
    给定一个字符串:它是由逗号分隔的几个值的序列:mStr='192.168.1.1,192.168.1.2,192.168.1.3'如何将字符串转换为列表?mStr=['192.168.1.1','192.16......