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正则表达式匹配HTML页面编码
Apr 08 Python
Python中的元类编程入门指引
Apr 15 Python
Python实现SVN的目录周期性备份实例
Jul 17 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
May 26 Python
在IPython中进行Python程序执行时间的测量方法
Nov 01 Python
python数据处理 根据颜色对图片进行分类的方法
Dec 08 Python
python使用opencv实现马赛克效果示例
Sep 28 Python
Python递归及尾递归优化操作实例分析
Feb 01 Python
python绘图pyecharts+pandas的使用详解
Dec 13 Python
详解Django中 render() 函数的使用方法
Apr 22 Python
详解分布式系统中如何用python实现Paxos
May 18 Python
Python requests用法和django后台处理详解
Mar 19 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
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
在PHP中利用wsdl创建标准webservice的实现代码
2011/12/07 PHP
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
扩展jquery实现客户端表格的分页、排序功能代码
2011/03/16 Javascript
基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)
2011/03/28 Javascript
javascript学习笔记(十八) 获得页面中的元素代码
2012/06/20 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
jQuery动态添加
2016/04/07 Javascript
D3.js实现直方图的方法详解
2016/09/25 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
JS实现类似百叶窗下拉菜单效果
2016/12/30 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
2019/05/15 Javascript
基于JavaScript伪随机正态分布代码实例
2019/11/07 Javascript
简单了解JS打开url的方法
2020/02/21 Javascript
django中send_mail功能实现详解
2018/02/06 Python
python Web开发你要理解的WSGI & uwsgi详解
2018/08/01 Python
详解Python中的type和object
2018/08/15 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
Django使用unittest模块进行单元测试过程解析
2019/08/02 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
Python数据可视化:箱线图多种库画法
2019/11/06 Python
Python批量安装卸载1000个apk的方法
2020/04/10 Python
Python OpenCV中的numpy与图像类型转换操作
2020/12/11 Python
Canvas与Image互相转换示例代码
2013/08/09 HTML / CSS
逼真的HTML5树叶飘落动画
2016/03/01 HTML / CSS
html5 制作地图当前定位箭头的方法示例
2020/01/10 HTML / CSS
SOA面试题:如何在SOA中实现松耦合
2013/07/21 面试题
应聘医学检验人员自荐信
2013/09/27 职场文书
高中生学习的自我评价
2013/12/14 职场文书
学习党章思想汇报
2014/01/07 职场文书
个人买房协议书范本
2014/10/06 职场文书
公司开除员工通知
2015/04/22 职场文书
导盲犬小Q观后感
2015/06/11 职场文书
培训感想范文
2015/08/07 职场文书
致毕业季:你如何做好自己的职业生涯规划书?
2019/07/01 职场文书
python实现三次密码验证的示例
2021/04/29 Python