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抓取模板之家的CSS模板
Mar 16 Python
python回调函数用法实例分析
May 09 Python
Python实现简单的获取图片爬虫功能示例
Jul 12 Python
python 获取list特定元素下标的实例讲解
Apr 09 Python
利用Python yagmail三行代码实现发送邮件
May 11 Python
使用50行Python代码从零开始实现一个AI平衡小游戏
Nov 21 Python
在python tkinter中Canvas实现进度条显示的方法
Jun 14 Python
tensorflow mnist 数据加载实现并画图效果
Feb 05 Python
Python编写单元测试代码实例
Sep 10 Python
Python timeit模块原理及使用方法
Oct 10 Python
Pytorch 如何实现LSTM时间序列预测
May 17 Python
聊聊pytorch测试的时候为何要加上model.eval()
May 23 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 接口类与抽象类的实际作用
2009/11/26 PHP
Zend Studio去除编辑器的语法警告设置方法
2012/10/24 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
2015/04/27 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
利用laravel搭建一个迷你博客实战教程
2017/08/13 PHP
使用PHP+MySql实现微信投票功能实例代码
2017/09/29 PHP
PHP实现防止表单重复提交功能【基于token验证】
2018/05/24 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
2019/04/15 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
JavaScript 加号(+)运算符号
2009/12/06 Javascript
对于this和$(this)的个人理解
2013/09/08 Javascript
JavaScript中setFullYear()方法的使用详解
2015/06/11 Javascript
jQuery实现的图片轮播效果完整示例
2016/09/12 Javascript
有趣的bootstrap走动进度条
2016/12/01 Javascript
webpack进阶——缓存与独立打包的用法
2017/08/02 Javascript
快速处理vue渲染前的显示问题
2018/03/05 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
2018/11/16 Javascript
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
vue使用axios实现excel文件下载的功能
2020/07/16 Javascript
解决vue 退出动画无效的问题
2020/08/09 Javascript
基于Python实现一个简单的银行转账操作
2016/03/06 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
解决Python selenium get页面很慢时的问题
2019/01/30 Python
matplotlib实现显示伪彩色图像及色度条
2019/12/07 Python
Python-jenkins模块之folder相关操作介绍
2020/05/12 Python
基于Python测试程序是否有错误
2020/05/16 Python
美国嘻哈文化生活方式品牌:GLD
2018/04/15 全球购物
巴基斯坦购物网站:Goto
2019/03/11 全球购物
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
仓库管理制度
2014/01/21 职场文书
实习报告怎么写
2019/06/20 职场文书