扣丁学堂Python培训简述使用Python实现openvpn的登录次数限制方法

2018-06-13 13:13:10 581浏览

本篇文章扣丁学堂Python培训小编主要是想和大家分享一下使用Python实现openvpn的登录次数限制方法,文章中会有代码列出,对Python开发感兴趣的小伙伴就随着小编一起来了解一下吧。



扣丁学堂Python培训简述使用Python实现openvpn的登录次数限制方法



linux上搭建的openvpn


openvpn使用mysql进行用户的验证


通过对openvpn日志的监控,实现对openvpn登录失败5次的用户进行锁定,一天后自动解锁


#!/usr/bin/env python3
#-*- coding:utf8 -*-
'''脚本对登录VPN失败次数超过5次的用户进行锁定'''
import time
import re
import os
file = open('/etc/openvpn/openvpn.log', 'r')
failname = {} #使用字典对登录失败用户次数进行统计
def get_blackname(line):
 blackname = []
 e = r"\'([\s\S]*)\'"  #过滤出登录失败的用户名
 fail_name = re.findall(e, line)
 for i in fail_name:
  if i not in failname:
   failname[i] = 1
  else:
   failname[i] += 1
  if failname[i] >= 5: #登录失败次数超过5次使用mysql_ban函数进行处理
   mysql_ban(i)    
   failname.clear()  #禁用后清空字典
#定义处理登录失败用户处理函数
def mysql_ban(blackname):
 cmd = 'mysql -uroot -pmysql -h 127.0.0.1 -P 4045 -e ' \
   '"update vpnuser set active=0 where name=\'%s\'" vpn ' % blackname
 os.system(cmd)
while 1: #监控openvpn的日志文件
 where = file.tell()
 line = file.readline()
 if not line: 
  time.sleep(1)
  file.seek(where)
 elif 'AUTH-PAM' in line:
  get_blackname(line)


需要配合crontab执行shell脚本才能实现自动解锁,shell脚本如下


然后根据需要设置每天几点解锁


> /etc/openvpn/openvpn.log
mysql -uroot -pmysql -h 127.0.0.1 -P 4045 -e "update vpnuser set active=1 where active=0" vpn



以上就是扣丁学堂Python在线学习小编给大家分享的使用Python实现openvpn的登录次数限制方法,希望对小伙伴们有所帮助。想要了解更多内容的小伙伴可以登录扣丁学堂官网咨询,扣丁学堂是专业的Python培训机构,不仅有专业的老师和与时俱进的课程体系,还有大量的Python在线教程供学员观看学习,想要学习Python开发的小伙伴快快行动吧。扣丁学堂Python技术交流群:279521237。


扣丁学堂微信公众号

关注微信公众号获取更多学习资料



查看更多关于"Python开发资讯"的相关文章>




标签: 扣丁学堂Python培训 用Python实现openvpn的登录次数限制方法 Python培训 Python视频教程 Python基础教程 python安装教程 Python核心编程 Python在线教程 Python在线视频 Python在线学习

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号