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之正规地说一句话
Sep 28 Python
详解python之配置日志的几种方式
May 22 Python
Python使用pickle模块存储数据报错解决示例代码
Jan 26 Python
Python实现爬虫从网络上下载文档的实例代码
Jun 13 Python
python将回车作为输入内容的实例
Jun 23 Python
更新修改后的Python模块方法
Mar 03 Python
flask框架jinja2模板与模板继承实例分析
Aug 01 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
May 19 Python
使用keras实现非线性回归(两种加激活函数的方式)
Jul 05 Python
python语音识别指南终极版(有这一篇足矣)
Sep 09 Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
Apr 04 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
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
thinkphp5 模型实例化获得数据对象的教程
2019/10/18 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
PNG背景在不同浏览器下的应用
2009/06/22 Javascript
指定位置如果有图片显示图片,无图片显示广告的JS
2010/06/05 Javascript
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
javascript中检测变量的类型的代码
2010/12/28 Javascript
图片懒加载插件实例分享(含解析)
2017/01/09 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)
2018/05/16 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
2018/06/04 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
javascript中floor使用方法总结
2019/02/02 Javascript
详解mpvue开发微信小程序基础知识
2019/09/23 Javascript
在vue中把含有html标签转为html渲染页面的实例
2019/10/28 Javascript
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
Python创建文件和追加文件内容实例
2014/10/21 Python
python更新列表的方法
2015/07/28 Python
python抽取指定url页面的title方法
2018/05/11 Python
python实现批量解析邮件并下载附件
2018/06/19 Python
示例详解Python3 or Python2 两者之间的差异
2018/08/23 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
python 字符串追加实例
2019/07/20 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
django有哪些好处和优点
2020/09/01 Python
纯css3实现的动画按钮的实例教程
2014/11/17 HTML / CSS
美国最大的旗帜经销商:Carrot-Top
2018/02/26 全球购物
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
Nobody Denim官网:购买高级女士牛仔裤
2021/03/15 全球购物
管理心得体会
2013/12/28 职场文书
竞聘演讲稿范文
2014/01/12 职场文书
教职工代表大会主持词
2014/04/01 职场文书
网络营销策划方案
2014/06/04 职场文书
十佳党员事迹材料
2014/08/28 职场文书
刑事上诉状范文
2015/05/22 职场文书