Bash - 解析 nmap 的 XML 输出

Bash - 解析 nmap 的 XML 输出

我正在尝试编写一个 bash 脚本,该脚本将获取我从 nmap 命令中检索到的端口 ID,然后使用这些端口通过 netcat 发送文件。因此,我使用此链接获得了一些基本知识,

如何使用 bash 脚本运行 nmap 并捕获 IP 和主机名?

和 nmap 手册页。结果我想出了以下脚本:

#! /bin/bash

FILE="input.txt"
sudo nmap -p1-20000 -sS 192.168.122.35 -oG - | awk '$4=="Status:" && $5=="Up" {cat $FILE | nc $2 $6}'

所以我遇到的问题与 $6 有关。它应该是从 nmap 命令检索到的端口号,但实际上什么也不是。我想知道你们是否能帮助我检索端口 ID。

答案1

假设您尝试将文件发送到主机上的每个开放端口,那么以下脚本应该适合您:

#!/bin/bash

HOST=192.168.122.35
FILE="input.txt"

nmap --open -n -p1-20000 $HOST | sed -rn 's/^([0-9]+)\/tcp.*open.*/\1/p' | 
    while read port; do nc $HOST $port < "$FILE"; done

相关内容