【问题标题】:Parse a virus scan result on Ubuntu在 Ubuntu 上解析病毒扫描结果
【发布时间】:2019-09-23 01:01:40
【问题描述】:

我正在尝试在 Ubuntu 上解析病毒扫描结果。命令行:

root@pc:/bin# /opt/eset/esets/sbin/esets_scan --clean-mode=None /home/majid/Bureau/1.exe

ESET Command-line scanner, version 4.0.93, (C) 1992-2013 ESET, spol. s r.o.
Module loader, version 1072 (20180813), build 1118
Module perseus, version 1549.3 (20190326), build 2010
Module scanner, version 19107 (20190329), build 40871
Module archiver, version 1285 (20190313), build 1377
Module advheur, version 1192 (20190204), build 1173
Module cleaner, version 1183 (20190305), build 1269

Command line: --clean-mode=None /home/majid/Bureau/1.exe 

Scan started at:   dim. 05 mai 2019 00:52:01 CEST
name="/home/majid/Bureau/1.exe", threat="a variant of MSIL/Kryptik.QME trojan", action="", info=""

Scan completed at: dim. 05 mai 2019 00:52:01 CEST
Scan time:         0 sec (0:00:00)
Total:             files - 1, objects 1
Infected:          files - 1, objects 1
Cleaned:           files - 0, objects 0

我想要什么?检查threat=xxxxx 是否存在,如果存在则只返回a variant of MSIL/Kryptik.QME trojan 之类的类型,否则返回clean

【问题讨论】:

  • 请将该示例输入的所需输出添加到您的问题中。

标签: bash parsing awk sed grep


【解决方案1】:

使用 GNU grep 你可以这样做:

/opt/eset/esets/sbin/esets_scan --clean-mode=None /home/majid/Bureau/1.exe |
  grep -Po 'threat="\K[^"]*' || echo clean

如果有一行(或多行)包含threat=",它将输出所有内容,直到下一个双引号。否则,它将打印clean

请注意,如果您的病毒扫描程序以某种方式失败,上述命令将显示clean,如果有问题请发表评论。

【讨论】:

    【解决方案2】:

    使用 GNU awk 匹配第三个参数:

    $ awk 'BEGIN{t="clean"} match($0,/threat="([^"]+)/,a){t=a[1]; exit} END{print t}' file
    a variant of MSIL/Kryptik.QME trojan
    

    在任何 UNIX 机器的任何 shell 中使用任何 awk:

    $ awk 'BEGIN{t="clean"} match($0,/threat="[^"]+/){t=substr($0,RSTART+8,RLENGTH-8); exit} END{print t}' file
    a variant of MSIL/Kryptik.QME trojan
    

    【讨论】:

      猜你喜欢
      • 2010-10-02
      • 2010-10-13
      • 2013-09-13
      • 1970-01-01
      • 2011-04-06
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多