我正在尝试编写一个 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