本文实例讲述了python实现集中式的病毒扫描功能。分享给大家供大家参考,具体如下:

一 点睛

本次实践实现了一个集中式的病毒扫描管理,可以针对不同业务环境定制扫描策略,比如扫描对象、描述模式、扫描路径、调度频率等。案例实现的架构图如下,首先业务服务器开启clamd服务(监听3310端口),管理服务器启用多线程对指定的服务集群进行扫描,扫描模式、扫描路径会传递到clamd,最后返回扫描结果给管理服务器端。

本次实战通过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 病毒脚本_python实现集中式的病毒扫描功能详解相关推荐

  1. python编写病毒扫描器_python实现集中式的病毒扫描功能详解

    本文实例讲述了python实现集中式的病毒扫描功能.分享给大家供大家参考,具体如下: 一 点睛 本次实践实现了一个集中式的病毒扫描管理,可以针对不同业务环境定制扫描策略,比如扫描对象.描述模式.扫描路 ...

  2. python process 函数_Python Process创建进程的2种方法详解

    前面介绍了使用 os.fork() 函数实现多进程编程,该方法最明显的缺陷就是不适用于 Windows 系统.本节将介绍一种支持 Python 在 Windows 平台上创建新进程的方法. Pytho ...

  3. python内存池_python内存监控工具memory_profiler和guppy的用法详解

    python内存监控工具memory_profiler和guppy的用法详解 发布时间:2020-08-21 19:44:58 来源:脚本之家 阅读:123 python2.7在内存管理上相比pyth ...

  4. python sqlsever 时间_Python sqlalchemy时间戳及密码管理实现代码详解

    一.时间戳 实际开发中,我们一般希望create_time和update_time这两个属性能自动设置,所以在建表的时候需要在model上特殊处理一下: from sqlalchemy.sql imp ...

  5. python 元组拆包_Python元组拆包和具名元组解析实例详解

    前言 在Python中元组是一个相较于其他语言比较特别的一个内置序列类型.有些python入门教程把元组成为"不可变的列表",这种说法是不完备的,其并没有完整的概括元组的特点.除了 ...

  6. python比例图_python在地图上画比例的实例详解

    现在用python画图已经难不倒一直跟小编学习的小伙伴们了,甚至有的小伙伴画图比小编还要厉害.为此小编还偷偷下了一番功夫,画图这种事情,细节上的完善肯定能让图片更加好看.所以小编知道大家会画地图,但是 ...

  7. python hook 微信_python实现微信跳一跳辅助工具步骤详解

    说明 1.windows上安装安卓模拟器,安卓版本5.1以上 2.模拟器里下载安装最新的微信6.6.1 3.最好使用python2.7,python3的pyhook包有bug,解决比较麻烦 步骤 1. ...

  8. python分支语句_Python中分支语句与循环语句实例详解

    前言 本篇博文介绍一下Python中的if条件语句.while循环语句.for in循环语句以及break和continue控制关键字. 分支的基本语法 if 条件表达式: 语句1 语句2 语句3 . ...

  9. python 切换环境_python多环境切换及pyenv使用过程详解

    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash 下载如下报错,则安装nss ...

最新文章

  1. 5.IA-32寄存器
  2. ArcGIS + Oracle 创建企业级地理数据库
  3. 11个高效的VS调试技巧
  4. oracle升级后报 06502,Oracle数据库升级后报ORA-00704和ORA-39700错误
  5. docker compose详解
  6. jq 鼠标指向隐藏显示区域
  7. UI设计素材|愉快的万圣节的插图着陆页
  8. Bokeh 借力其他库
  9. block相对于delegate有哪些优缺点?
  10. 【赠书活动】赠送清华社的《好好学Java:从零基础到项目实战》
  11. java filter bme_节点红色,想截断BME280传感器的结果
  12. Ajax入门教程(内附源码实例)
  13. HTML实现简单水平导航栏
  14. project不显示里程碑标志_如何在项目管理中使用里程碑
  15. 2022年烟花爆竹经营单位安全管理人员培训试题及模拟考试
  16. mysql中db的名词解释_数据库常用名词解释大全
  17. Python软件编程等级考试二级——20220618
  18. 半双工通信java_Socket实现一个简单的半双工通信
  19. python菜根谭小猫_少儿编程国学动画经典案例_作者:李兴球
  20. 外贸外链发布渠道有哪些?

热门文章

  1. 【Google Cloud】账单告警信息推送至第三方
  2. 在线观看视频解决音频不同步
  3. C++上机实验3-个人所得税计算器
  4. 初识Scrapy之再续火影情缘
  5. 用H5做直播网站源码,如何实现格式推流和播放
  6. 30岁的程序员,你迷惘了吗?
  7. 在VisualC++中使用MapX
  8. 高级驱动——(驱动所有按键)
  9. 【蓝桥杯】单片机精确延时——软件延时
  10. python遗传算法(应用篇1)--求解一元函数极值