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代码(逐级优化)
May 25 Python
python制作企业邮箱的爆破脚本
Oct 05 Python
聊聊Python中的pypy
Jan 12 Python
python 用lambda函数替换for循环的方法
Jun 09 Python
python文档字符串(函数使用说明)使用详解
Jul 30 Python
pytorch 输出中间层特征的实例
Aug 17 Python
Python类中方法getitem和getattr详解
Aug 30 Python
python计算n的阶乘的方法代码
Oct 25 Python
python3中利用filter函数输出小于某个数的所有回文数实例
Nov 24 Python
python+requests接口压力测试500次,查看响应时间的实例
Apr 30 Python
Python 生成短8位唯一id实战教程
Jan 13 Python
详细介绍python类及类的用法
May 31 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
解决phpmyadmin 乱码,支持gb2312和utf-8
2006/11/20 PHP
用PHP查询域名状态whois的类
2006/11/25 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
2016/08/17 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
JS类中定义原型方法的两种实现的区别
2007/03/08 Javascript
脚本合并提升javascript性能示例
2014/02/24 Javascript
深入理解javascript变量声明
2014/11/20 Javascript
javascript中setInterval的用法
2015/07/19 Javascript
Javascript实现鼠标框选操作  不是点击选取
2016/04/14 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
2016/12/22 Javascript
JavaScript利用闭包实现模块化
2017/01/13 Javascript
vue实现todolist单页面应用
2017/04/11 Javascript
解决element UI 自定义传参的问题
2018/08/22 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
茶余饭后聊聊Vue3.0响应式数据那些事儿
2019/10/30 Javascript
python使用xpath中遇到:到底是什么?
2018/01/04 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
基于python的selenium两种文件上传操作实现详解
2019/09/19 Python
解决python replace函数替换无效问题
2020/01/18 Python
python获取命令行参数实例方法讲解
2020/11/02 Python
使用HTML5的File实现base64和图片的互转
2013/08/01 HTML / CSS
Hanro官网:奢华男士和女士内衣、睡衣和家居服
2018/10/25 全球购物
酒店个人求职信范文
2014/01/25 职场文书
服装设计师职业生涯规划范文
2014/02/28 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
个人职业及收入证明
2014/10/13 职场文书
党员四风问题个人对照检查材料
2014/10/26 职场文书
2016高三毕业赠言寄语
2015/12/04 职场文书
2016年植树节红领巾广播稿
2015/12/17 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
golang 比较浮点数的大小方式
2021/05/02 Golang
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android
python的列表生成式,生成器和generator对象你了解吗
2022/03/16 Python
TV动画《神废柴☆偶像》公布先导PV
2022/03/20 日漫
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS