python实现集中式的病毒扫描功能详解


Posted in Python onJuly 09, 2019

本文实例讲述了python实现集中式的病毒扫描功能。分享给大家供大家参考,具体如下:

一 点睛

本次实践实现了一个集中式的病毒扫描管理,可以针对不同业务环境定制扫描策略,比如扫描对象、描述模式、扫描路径、调度频率等。案例实现的架构图如下,首先业务服务器开启clamd服务(监听3310端口),管理服务器启用多线程对指定的服务集群进行扫描,扫描模式、扫描路径会传递到clamd,最后返回扫描结果给管理服务器端。

 python实现集中式的病毒扫描功能详解

本次实战通过ClamdNetworkSocket()方法实现与业务服务器建立扫描socket连接,再通过启动不同扫描方式实施病毒扫描并返回结果。

二 代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
import pyclamd
from threading import Thread
class Scan(Thread):
  def __init__ (self,IP,scan_type,file):
    """构造方法"""
    Thread.__init__(self)
    self.IP = IP
    self.scan_type=scan_type
    self.file = file
    self.connstr=""
    self.scanresult=""
  def run(self):
    """多进程run方法"""
    try:
      cd = pyclamd.ClamdNetworkSocket(self.IP,3310)
      if cd.ping():
        self.connstr=self.IP+" connection [OK]"
        cd.reload()
        if self.scan_type=="contscan_file":
          self.scanresult="{0}\n".format(cd.contscan_file(self.file))
        elif self.scan_type=="multiscan_file":
          self.scanresult="{0}\n".format(cd.multiscan_file(self.file))
        elif self.scan_type=="scan_file":
          self.scanresult="{0}\n".format(cd.scan_file(self.file))
        time.sleep(1)
      else:
        self.connstr=self.IP+" ping error,exit"
        return
    except Exception,e:
      self.connstr=self.IP+" "+str(e)
IPs=['192.168.0.120']
scantype="multiscan_file"
scanfile="/data"
i=1
threadnum=2
scanlist = []
for ip in IPs:
  currp = Scan(ip,scantype,scanfile)
  scanlist.append(currp)
  if i%threadnum==0 or i==len(IPs):
    for task in scanlist:
      task.start()
    for task in scanlist:
      task.join()
      print task.connstr
      print task.scanresult
    scanlist = []
  i+=1

三 结果

1 无病毒的情况下,扫描结果

E:\Python\python_auto_maintain\venv\Scripts\python.exe E:/Python/python_auto_maintain/4_1_2.py
192.168.0.120 connection [OK]
None

2 有病毒的情况下,扫描结果

2.1 制作病毒测试文件

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

2.2 扫描结果

E:\Python\python_auto_maintain\venv\Scripts\python.exe E:/Python/python_auto_maintain/4_1_2.py
192.168.0.120 connection [OK]
{u'/data/EICAR': ('FOUND', 'Eicar-Test-Signature')}

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python进程与线程操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python获取任意xml节点值的方法
May 05 Python
Python错误: SyntaxError: Non-ASCII character解决办法
Jun 08 Python
Python实现的堆排序算法示例
Apr 29 Python
Python 编码规范(Google Python Style Guide)
May 05 Python
Python使用matplotlib绘制三维图形示例
Aug 25 Python
用Python PIL实现几个简单的图片特效
Jan 18 Python
django中forms组件的使用与注意
Jul 08 Python
python实现桌面气泡提示功能
Jul 29 Python
Django ORM 自定义 char 类型字段解析
Aug 09 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
Python pip使用超时问题解决方案
Aug 03 Python
python 实现aes256加密
Nov 27 Python
python 图片去噪的方法示例
Jul 09 #Python
python 使用plt画图,去除图片四周的白边方法
Jul 09 #Python
浅谈Python小波分析库Pywavelets的一点使用心得
Jul 09 #Python
python basemap 画出经纬度并标定的实例
Jul 09 #Python
python实现列表中最大最小值输出的示例
Jul 09 #Python
python实现基于朴素贝叶斯的垃圾分类算法
Jul 09 #Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 #Python
You might like
jQuery开发者都需要知道的5个小技巧
2010/01/08 Javascript
js正文内容高亮效果的实现方法
2013/06/30 Javascript
js中的前绑定和后绑定详解
2013/08/01 Javascript
jquery实现手机端单店铺购物车结算删除功能
2017/02/22 Javascript
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
jQuery:unbind方法的使用详解
2017/08/14 jQuery
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
VUE饿了么树形控件添加增删改功能的示例代码
2017/10/17 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
解决vue中修改了数据但视图无法更新的情况
2018/08/27 Javascript
JavaScript的查询机制LHS和RHS解析
2019/08/16 Javascript
小程序如何获取多个formId实现详解
2019/09/20 Javascript
js实现GIF图片的分解和合成
2019/10/24 Javascript
[03:23:49]2016.12.17日完美“圣”典全回顾
2016/12/19 DOTA
Python pickle类库介绍(对象序列化和反序列化)
2014/11/21 Python
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
Python实现从URL地址提取文件名的方法
2015/05/15 Python
Perl中著名的Schwartzian转换问题解决实现
2015/06/02 Python
Django中使用locals()函数的技巧
2015/07/16 Python
Django 路由系统URLconf的使用
2018/10/11 Python
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
tensorflow转换ckpt为savermodel模型的实现
2020/05/25 Python
HTML5+CSS3绘制锯齿状的矩形
2016/03/01 HTML / CSS
一份全面的PHP面试问题考卷
2012/07/15 面试题
开业主持词
2014/03/21 职场文书
感恩节活动策划方案
2014/05/16 职场文书
职业规划实施方案
2014/06/10 职场文书
暑期培训班策划方案
2014/08/26 职场文书
乡镇党员干部四风对照检查材料思想汇报
2014/09/27 职场文书
二年级语文下册复习计划
2015/01/19 职场文书
幼儿园2015年度工作总结
2015/04/01 职场文书
联谊会开场白
2015/06/01 职场文书
SpringBoot整合阿里云视频点播的过程详解
2021/12/06 Java/Android
Android Studio实现带三角函数对数运算功能的高级计算器
2022/05/20 Java/Android