当前位置: 首页 > article >正文

Linux Debian安装ClamAV和命令行扫描病毒方法,以及用Linux Shell编写了一个批量扫描病毒的脚本

ClamAV是一个开源的跨平台病毒扫描引擎,用于检测恶意软件、病毒、木马等安全威胁。

一、Linux Debian安装ClamAV

在Linux Debian系统上安装ClamAV,你可以按照以下步骤进行:

  1. 更新软件包列表
    打开终端并更新你的软件包列表:

    sudo apt update
    
  2. 安装ClamAV
    使用apt安装ClamAV:

    sudo apt install clamav clamav-daemon
    
  3. 更新病毒数据库
    安装完成后,更新病毒数据库:

    sudo freshclam
    

    这个命令会下载最新的病毒数据库。你可能需要等待几分钟,直到数据库完全更新。

  4. 配置ClamAV
    根据你的需求配置ClamAV。通常,你可能需要编辑/etc/clamav/clamd.conf/etc/clamav/freshclam.conf文件。

  5. 启动ClamAV服务
    ClamAV 守护进程(clamd)可以提供实时扫描功能,启动ClamAV守护进程:

    sudo systemctl start clamav-daemon
    

    如果你想要ClamAV在系统启动时自动运行,可以使用以下命令来启用它:

    sudo systemctl enable clamav-daemon
    
  6. 测试ClamAV
    测试ClamAV是否正常工作,你可以扫描一个文件:

    clamscan --infected --remove --recursive /path/to/directory
    

    这个命令会递归扫描指定目录,移除检测到的病毒,并显示被感染的文件。

  7. 定期更新病毒数据库
    你可以设置一个cron作业来定期更新病毒数据库:

    sudo crontab -e
    

    然后添加以下行来每天晚上22:00自动更新病毒数据库(需要root账户,普通账户sudo freshclam需要输入密码):

    0 22 * * * freshclam
    

请注意,这些步骤可能会因为Debian的不同版本而略有不同。如果你遇到任何问题,可以查看ClamAV的官方文档或者Debian的社区论坛获取帮助。

二、ClamAV病毒扫描方法

以下是如何使用ClamAV进行病毒扫描的一些基本命令:

  1. 扫描单个文件

    clamscan file.txt
    

    这将扫描名为file.txt的文件,并显示是否发现病毒。

  2. 扫描目录

    clamscan -r /path/to/directory
    

    这将递归扫描指定目录及其子目录中的所有文件。

  3. 扫描结果

    • OK:文件没有被检测到病毒。
    • FOUND:文件被检测到病毒。
  4. 移除病毒
    如果你想要ClamAV在发现病毒时自动删除它们,可以使用--remove选项:

    clamscan --remove -r /path/to/directory
    
  5. 静默模式
    如果你不想看到每个文件的扫描结果,可以使用--quiet选项:

    clamscan --quiet -r /path/to/directory
    
  6. 扫描结果输出到文件
    你可以将扫描结果输出到一个文件中,以便后续查看:

    clamscan  -r /path/to/directory > scan_results.txt
    
  7. 使用ClamAV守护进程
    如果你安装了clamav-daemon,可以使用clamdscan命令来利用守护进程进行扫描,这通常比clamscan更快:

    clamdscan file.txt
    

    或者扫描目录:

    clamdscan -r /path/to/directory
    

8.查杀病毒完毕后,查找病毒文件

cat scan_results.txt  | grep "FOUND"

9.更新病毒数据库
在扫描之前,确保你的病毒数据库是最新的:

sudo freshclam

10.设置定期扫描
你可以设置cron作业来定期自动扫描系统(需要root账户,普通账户sudo clamscan需要输入密码):

(crontab -l 2>/dev/null; echo "0 2 * * * clamscan -r /path/to/directory") | crontab -

这个命令会在每天凌晨2点扫描指定目录。

请记得在执行这些命令之前,确保ClamAV已经安装在你的系统上,并且病毒数据库是最新的。如果你需要帮助或者想要了解更多高级选项,可以查看ClamAV的官方文档或者使用man clamscanman clamdscan命令来获取手册页。

三、可以编写一个shell脚本

clamav_scan.sh

#!/bin/bash
# 脚本功能:clamav扫描病毒,将威胁文件清除,并生成扫描日志文件

#---------------------------------------------------------------------------------
#函数功能:主函数
#---------------------------------------------------------------------------------
function main(){
    # 判断$1参数是否为空,不为空设置input_scan_path
    if [ -z $1 ];then
        # echo "第一个参数为空"
        # 获取当前脚本名称
        local script_name=$(basename "$0")
        echo "请在运行脚本'${script_name}'名称后面,输入参数:'扫描路径'"
        exit
    else
        # echo "第一个参数不为空,值为:$1"
        local input_scan_path=$1
    fi

    if [ -d "$input_scan_path" ]; then
        echo "输入的扫描路径'$input_scan_path'是一个目录"
        echo "clamav开始扫描病毒:"
        # 将一个空字符串写入scan_results.txt文件中。如果文件不存在,将会创建一个空的文件
        echo "创建存储扫描结果文件'scan_results.txt'"
        echo "" > scan_results.txt
        echo "clamav扫描病毒中......"
        # clamscan开始扫描查杀病毒
        sudo clamscan --log=scan_results.txt --infected --remove --recursive "$input_scan_path"
        echo "clamav结束扫描病毒。请查看并分析创建扫描结果文件'scan_results.txt'"
    elif [ -f "$input_scan_path" ]; then
        echo "输入的扫描路径'$input_scan_path'是一个文件"
        echo "clamav开始扫描病毒:"
        # 将一个空字符串写入scan_results.txt文件中。如果文件不存在,将会创建一个空的文件
        echo "创建存储扫描结果文件'scan_results.txt'"
        echo "" > scan_results.txt
        echo "clamav扫描病毒中......"
        # clamscan开始扫描查杀病毒
        sudo clamscan --log=scan_results.txt --infected --remove "$input_scan_path"
        echo "clamav结束扫描病毒。请查看并分析创建扫描结果文件'scan_results.txt'"
    else
        echo "输入的扫描路径'$input_scan_path'既不是目录也不是文件,请核实输入的扫描路径。"
        exit
    fi    
}


# ---------------执行主函数-------------------
main $1

1.赋予shell脚本文件执行权限

chmod +x clamav_scan.sh

2.运行shell脚本,请在运行脚本名称后面,输入一个扫描路径参数:

./clamav_scan.sh "扫描路径"

测试效果:

在这里插入图片描述



http://www.kler.cn/a/461463.html

相关文章:

  • Yocto项目 - 详解PACKAGECONFIG机制
  • LeetCode:106.从中序与后序遍历序列构造二叉树
  • df.replace({‘b‘: r‘\s*(\.)\s*‘}, {‘b‘: r‘\1ty‘}, regex=True)
  • LoRA微调系列笔记
  • idea 的 springboot项目spring-boot-devtools 自动编译 配置热部署
  • 【CSS in Depth 2 精译_099】17.5:基于页面滚动的动画时间线设置(全新)+ 17.6:最后一点建议 + 17.7:本章小结
  • uniapp——微信小程序读取bin文件,解析文件的数据内容(三)
  • 118.杨辉三角120.三角形最小路径和
  • docker加速镜像和加速镜像配置
  • 基于FPGA的辩论赛系统设计-8名选手-正反两方-支持单选手评分-正反两方评分总和
  • 小程序分包优化实践:解决主包过大和vendor.js体积问题
  • C++ 设计模式:中介者模式(Mediator Pattern)
  • khadas edge2安装ubuntu22.04与ubuntu20.04 docker镜像
  • 计算机网络 (18)使用广播信道的数据链路层
  • Android中加载一张图片占用的内存
  • 2024年总结(2024年1月1日至2024年12月31日)
  • java中的文件操作
  • arthas查看拼接好参数的sql, redis, es完整可直接执行的命令
  • 30天开发操作系统 第 10 天 -- 叠加处理
  • 纯血鸿蒙ArkUI媒体查询详解
  • 【每日学点鸿蒙知识】无障碍、getLastLocation、蓝牙问题、卡片大小、关系型数据库等
  • LeetCode 热题 100_对称二叉树(39_101_简单_C++)(二叉树;递归;层次遍历(广度优先))
  • python中的元组类型
  • Unity中的Input.GetMouseButton,GetMouseButtonDown,GetMouseButtonUp
  • 汇编点灯练习
  • 创建型设计模式、结构型设计模式与行为型设计模式 上下文任务通用方案 设计模式 大全