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标准算法实现数组全排列的方法
Mar 17 Python
Python递归遍历列表及输出的实现方法
May 19 Python
flask使用session保存登录状态及拦截未登录请求代码
Jan 19 Python
python实现微信自动回复功能
Apr 11 Python
Pipenv一键搭建python虚拟环境的方法
May 22 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
Nov 06 Python
详解Python连接MySQL数据库的多种方式
Apr 16 Python
实例详解Python模块decimal
Jun 26 Python
python实现根据文件格式分类
Oct 31 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
Nov 29 Python
Python OpenCV视频截取并保存实现代码
Nov 30 Python
对python中各个response的使用说明
Mar 28 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数组函数序列之array_pop() - 删除数组中的最后一个元素
2011/11/07 PHP
解析centos中Apache、php、mysql 默认安装路径
2013/06/25 PHP
PHP缓存集成库phpFastCache用法
2014/12/15 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
2017/03/04 PHP
基于Laravel 5.2 regex验证的正确写法
2019/09/29 PHP
jquery插件制作 表单验证实现代码
2012/08/17 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
2015/09/21 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
用jQuery实现可输入多选下拉组合框实例代码
2017/01/18 Javascript
JS使用正则表达式验证身份证号码
2017/06/23 Javascript
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
vue通过路由实现页面刷新的方法
2018/01/25 Javascript
Angular实现的进度条功能示例
2018/02/18 Javascript
使用puppeteer破解极验的滑动验证码
2018/02/24 Javascript
Node.js Event Loop各阶段讲解
2019/03/08 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
Python中的各种装饰器详解
2015/04/11 Python
Python实现的选择排序算法示例
2017/11/29 Python
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
匡威英国官网:Converse英国
2018/12/02 全球购物
全球才华横溢工匠的家居装饰、珠宝和礼物:NOVICA
2021/01/22 全球购物
在什么时候需要使用"常引用"
2015/12/31 面试题
毕业生怎样写好自荐信
2013/11/11 职场文书
网络维护中文求职信
2014/01/03 职场文书
对外汉语专业大学生职业生涯规划范文
2014/09/13 职场文书
Python+uiautomator2实现自动刷抖音视频功能
2021/04/29 Python
SQL优化老出错,那是你没弄明白MySQL解释计划用法
2021/11/27 MySQL
关于Python使用turtle库画任意图的问题
2022/04/01 Python
nginx配置指令之server_name的具体使用
2022/08/14 Servers
js 实现Material UI点击涟漪效果示例
2022/09/23 Javascript