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中函数的参数传递与可变长参数介绍
Jun 30 Python
Python两个内置函数 locals 和globals(学习笔记)
Aug 28 Python
python如何爬取个性签名
Jun 19 Python
Python检查ping终端的方法
Jan 26 Python
python-tkinter之按钮的使用,开关方法
Jun 11 Python
python的常见矩阵运算(小结)
Aug 07 Python
Python学习笔记之迭代器和生成器用法实例详解
Aug 08 Python
Python如何获取Win7,Win10系统缩放大小
Jan 10 Python
django创建超级用户时指定添加其它字段方式
May 14 Python
Django rest framework如何自定义用户表
Jun 09 Python
Python matplotlib可视化之绘制韦恩图
Feb 24 Python
python库Tsmoothie模块数据平滑化异常点抓取
Jun 10 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
在Windows版的PHP中使用ADO
2006/10/09 PHP
PHP获取Exif缩略图的方法
2015/07/13 PHP
PHP Cookei记录用户历史浏览信息的代码
2016/02/03 PHP
图文详解PHP环境搭建教程
2016/07/16 PHP
PHP+JQuery+Ajax实现分页方法详解
2016/08/06 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
[JS源码]超长文章自动分页(客户端版)
2007/01/09 Javascript
JQuery跨Iframe选择实现代码
2010/08/19 Javascript
url参数中有+、空格、=、%、&、#等特殊符号的问题解决
2013/05/15 Javascript
基于js disabled="false"不起作用的解决办法
2013/06/26 Javascript
JavaScript中的原型链prototype介绍
2014/12/30 Javascript
node.js集成百度UE编辑器
2015/02/05 Javascript
JavaScript中的await/async的作用和用法
2016/10/31 Javascript
js数组与字符串常用方法总结
2017/01/13 Javascript
js判断手机号是否正确并返回的实现代码
2017/01/17 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
2017/02/13 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
2018/01/06 jQuery
vue写一个组件
2018/04/09 Javascript
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
vue中keep-alive组件的入门使用教程
2019/06/06 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
解决vue项目中遇到 Cannot find module ‘chalk‘ 报错的问题
2020/11/05 Javascript
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
[01:01:18]VP vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python六大开源框架对比
2015/10/19 Python
python编程开发之textwrap文本样式处理技巧
2015/11/13 Python
python采集微信公众号文章
2018/12/20 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
浅谈CSS3中的变形功能-transform功能
2017/12/27 HTML / CSS
美国批发供应商:Kole Imports
2019/04/10 全球购物
温泉秘密:Onsen Secret
2020/07/06 全球购物
会计出纳岗位职责
2013/12/25 职场文书
2014年作风建设工作总结
2014/10/29 职场文书
应届生简历自我评价
2015/03/11 职场文书
MySQL表的增删改查基础教程
2021/04/07 MySQL