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实现远程调用MetaSploit的方法
Aug 22 Python
Python中pillow知识点学习
Apr 30 Python
对python捕获ctrl+c手工中断程序的两种方法详解
Dec 26 Python
Python时间和字符串转换操作实例分析
Mar 16 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
Aug 02 Python
pyinstaller打包程序exe踩过的坑
Nov 19 Python
如何基于Python制作有道翻译小工具
Dec 16 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
Mar 09 Python
python中plt.imshow与cv2.imshow显示颜色问题
Jul 16 Python
用python-webdriver实现自动填表的示例代码
Jan 13 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
Feb 03 Python
自动在Windows中运行Python脚本并定时触发功能实现
Sep 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
PHP连接access数据库
2008/03/27 PHP
令PHP初学者头疼十四条问题大总结
2008/11/12 PHP
ecshop实现smtp发送邮件
2015/02/03 PHP
php web环境和命令行环境下查找php.ini的位置
2019/07/17 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
2019/09/18 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
2020/03/16 PHP
JS处理VBArray的函数使用说明
2008/05/11 Javascript
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
js 提交和设置表单的值
2008/12/19 Javascript
Jquery插件分享之气泡形提示控件grumble.js
2014/05/20 Javascript
JQuery $.each遍历JavaScript数组对象实例
2014/09/01 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
JavaScript代码实现图片循环滚动效果
2020/03/19 Javascript
jQuery ajaxForm()的应用
2016/10/14 Javascript
Angular页面间切换及传值的4种方法
2016/11/04 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
vue父子组件的嵌套的示例代码
2017/09/08 Javascript
vue实现前进刷新后退不刷新效果
2018/01/26 Javascript
jQuery实现table表格checkbox全选的方法分析
2018/07/04 jQuery
angularjs http与后台交互的实现示例
2018/12/21 Javascript
记一次vue去除#问题处理经过小结
2019/01/24 Javascript
ZK中使用JS读取客户端txt文件内容问题
2019/11/07 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
2020/08/18 Javascript
python字符串连接方法分析
2016/04/12 Python
利用Python在一个文件的头部插入数据的实例
2018/05/02 Python
几个常见的消息中间件(MOM)
2014/01/08 面试题
新书吧创业计划书
2014/01/31 职场文书
社区八一活动方案
2014/02/03 职场文书
社会实践先进工作者事迹材料
2014/05/06 职场文书
奥巴马胜选演讲稿
2014/05/15 职场文书
教师学习群众路线心得体会
2014/11/04 职场文书
政风行风整改报告
2014/11/06 职场文书
优秀共产党员推荐材料
2014/12/18 职场文书
先进基层党组织事迹材料
2014/12/25 职场文书
病房管理制度范本
2015/08/06 职场文书
幼儿园教师培训心得体会
2016/01/21 职场文书