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修改注册表终止360进程实例
Oct 13 Python
Python基于回溯法子集树模板实现8皇后问题
Sep 01 Python
python使用matplotlib画柱状图、散点图
Mar 18 Python
Python3中函数参数传递方式实例详解
May 05 Python
python 列表、字典和集合的添加和删除操作
Dec 16 Python
django使用F方法更新一个对象多个对象字段的实现
Mar 28 Python
基于Python快速处理PDF表格数据
Jun 03 Python
详解python 内存优化
Aug 17 Python
Python调用SMTP服务自动发送Email的实现步骤
Feb 07 Python
Python列表的深复制和浅复制示例详解
Feb 12 Python
深入理解python多线程编程
Apr 18 Python
两行代码解决Jupyter Notebook中文不能显示的问题
Apr 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读取javascript设置的cookies的代码
2010/04/12 PHP
PHP页面中文乱码分析
2013/10/29 PHP
ThinkPHP 表单自动验证运用示例
2014/10/13 PHP
Laravel+jQuery实现AJAX分页效果
2016/09/14 PHP
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
超级酷和最实用的jQuery实例收集(20个)
2010/04/21 Javascript
js客户端快捷键管理类的较完整实现和应用
2010/06/08 Javascript
用jquery方法操作radio使其默认选项是否
2013/09/10 Javascript
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
聊一聊JavaScript作用域和作用域链
2016/05/03 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
2017/03/24 jQuery
10个最优秀的Node.js MVC框架
2017/08/24 Javascript
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
2018/12/11 Javascript
微信小程序实现单列下拉菜单效果
2019/04/25 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
2019/06/10 jQuery
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
python中根据字符串调用函数的实现方法
2016/06/12 Python
python基础教程之分支、循环简单用法
2016/06/16 Python
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
python实现读Excel写入.txt的方法
2018/04/29 Python
pytorch获取模型某一层参数名及参数值方式
2019/12/30 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
html5理解head_动力节点Java学院整理
2017/07/13 HTML / CSS
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
文员个人求职自荐信
2013/09/21 职场文书
接待员岗位责任制
2014/02/10 职场文书
旅游节目策划方案
2014/05/26 职场文书
2014年计生工作总结
2014/11/21 职场文书
销售员岗位职责范本
2015/04/11 职场文书
小学推普周活动总结
2015/05/07 职场文书
立春观后感
2015/06/18 职场文书
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android
PostgreSQL自动更新时间戳实例代码
2021/11/27 PostgreSQL
Axios代理配置及封装响应拦截处理方式
2022/04/07 Vue.js