【问题标题】:How to create an XML Parser?如何创建 XML 解析器?
【发布时间】:2022-01-16 23:05:51
【问题描述】:

情况:

我正在使用 Nmap 进行网络扫描,并想创建一个脚本,该脚本以 XML 格式获取一些 Nmap 输出并对其进行解析,并在此基础上打印我想要的信息。

问题描述:

这个解析器应该:

  • 能够接受给定的输入并产生输出

  • 输入应该是一个 XML 文件。

  • 输出应该是以下两件事之一:

    1. 能够在终端上打印文本
    2. 能够将处理后的信息输出到文本文件或 HTML 文件。

结论:

我需要构建一个具有上述功能的解析器,我该如何实现呢? 或者,如果可能的话,是否有任何具有所需功能的现成解决方案?

编辑 1: 我想使用 bash 脚本,而 bash 脚本是最受欢迎的答案,但我也对其他语言持开放态度。

【问题讨论】:

    标签: xml xml-parsing nmap


    【解决方案1】:

    在处理 nmap 结果时,我首先想到的是Zenmap,但这更像是一个用于 nmap 的 GUI。您可能想查看nmap-parse,它是一个命令行工具,似乎可以提供您想要的;虽然我自己从来没有使用过,所以我不能保证。

    我应该指出,如果您对 Python 有点熟悉,那么创建自定义脚本来解析 nmap 输出非常简单。这是我在查看 Python xml modulenmap XML output 的文档后创建的示例:

    import xml.etree.ElementTree as ET
    tree = ET.parse('output.xml')
    root = tree.getroot()
    
    for host in filter(lambda h: h.tag == 'host', root):
        status = host.find('status')
        address = host.find('address')
        print('Host', address.attrib['addr'], 'is', status.attrib['state'])
    

    【讨论】:

    • 嗨,谢谢,但是有没有办法使用 bash 脚本来实现呢?
    • 另外,这个工具看起来不错,当我测试它并完成工作时,我会发布编辑或答案。
    • 虽然在技术上是可行的,但在 bash 中解析 xml 是一个有争议的话题(请参阅 this question)我非常怀疑它会给您留下一个像 Python 一样简单的脚本。
    • 实际上,该链接有我的解决方案,但也非常感谢 python 替代方案。我已将此答案标记为已接受。
    猜你喜欢
    • 2011-06-26
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 2011-04-18
    • 2015-11-15
    • 2018-12-02
    • 1970-01-01
    相关资源
    最近更新 更多