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 相关文章推荐
pycharm 使用心得(五)断点调试
Jun 06 Python
python实现的简单窗口倒计时界面实例
May 05 Python
编写Python CGI脚本的教程
Jun 29 Python
Python内建数据结构详解
Feb 03 Python
Python实现八大排序算法
Aug 13 Python
Python类的继承和多态代码详解
Dec 27 Python
Python操作mongodb数据库的方法详解
Dec 08 Python
Python3.5集合及其常见运算实例详解
May 01 Python
django之使用celery-把耗时程序放到celery里面执行的方法
Jul 12 Python
python数据爬下来保存的位置
Feb 17 Python
Python urllib.request对象案例解析
May 11 Python
安装并免费使用Pycharm专业版(学生/教师)
Sep 24 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
PHP 之Section与Cookie使用总结
2012/09/14 PHP
Php中使用Select 查询语句的实例
2014/02/19 PHP
PHP几个实用自定义函数小结
2016/01/25 PHP
JAVASCRIPT 对象的创建与使用
2021/03/09 Javascript
JavaScript修改css样式style
2008/04/15 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
2016/01/26 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
使用Vue写一个datepicker的示例
2018/01/27 Javascript
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
2018/07/30 Javascript
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
jQuery使用each遍历循环的方法
2018/09/19 jQuery
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
[03:42]2016国际邀请赛中国区预选赛首日现场玩家采访
2016/06/26 DOTA
python创建临时文件夹的方法
2015/07/06 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
2018/05/18 Python
python读写配置文件操作示例
2019/07/03 Python
基于HTML5 FileSystem API的使用介绍
2013/04/24 HTML / CSS
H5混合开发app如何升级的方法
2018/01/10 HTML / CSS
html5 figure和figcaption的使用方法
2018/09/10 HTML / CSS
物业电工岗位职责
2013/11/20 职场文书
思想品德课教学反思
2014/02/10 职场文书
股东协议书范本
2014/04/14 职场文书
干部考核评语
2014/04/29 职场文书
小班下学期评语
2014/05/04 职场文书
学校四风对照检查材料
2014/08/28 职场文书
群众路线剖析材料(四风)
2014/11/05 职场文书
2015年幼儿园教研活动总结
2015/03/25 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
海洋天堂观后感
2015/06/05 职场文书
承诺书的内容有哪些,怎么写?
2019/06/21 职场文书
假期读书倡议书3篇
2019/08/19 职场文书
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS