You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Nmap扫描结果提取开放端口号并去除末尾冗余字符

解决Nmap扫描开放端口输出冗余逗号和%符号的问题

问题描述

扫描单个IP,仅提取开放端口号并以逗号分隔的单行形式输出。现有代码可实现核心功能,但输出末尾会多出逗号和%符号,需要去除冗余内容,得到无多余字符的端口号列表。

现有代码

sudo nmap -vv -sS 10.129.208.16 -oG  - | awk -v OFS=':' '
/open/ {
  for (i=4;i<=NF;i++) {
    split($i,a,"/");
    if (a[2]=="open") {printf a[1]","}
  }
}'

现有输出

21,22,53,80,139,443,445,%

期望输出

21,22,53,80,139,443,445

解决方案

通过收集开放端口到数组,最后统一拼接输出,避免逐个打印时的末尾冗余逗号,同时添加换行符消除shell提示符%的混入。

修改后的代码:

sudo nmap -vv -sS 10.129.208.16 -oG - | awk '
/open/ {
  for (i=4;i<=NF;i++) {
    split($i,a,"/");
    if (a[2]=="open") ports[++n] = a[1]
  }
}
END {
  for (i=1;i<=n;i++) {
    printf "%s%s", ports[i], (i<n ? "," : "\n")
  }
}'

代码说明

  • 使用数组ports存储所有开放端口号,避免循环中逐个打印时强制追加逗号
  • 在END块中遍历数组,仅在非最后一个端口后添加逗号,最后一个端口后输出换行符,彻底解决末尾冗余逗号和%符号问题

内容的提问来源于stack exchange,提问作者Nr-yolo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 14:03:29