为什么shell脚本中nmap命令的>/dev/null重定向未按预期生效?
错误原因
- 脚本内的
my_IP_address是占位符,你没有替换为实际要扫描的IP地址或网段(例如192.168.1.0/24这类格式),导致nmap无法执行有效扫描,生成的MySQLscan文件中没有匹配open关键词的记录,最终MySQLscan2为空。你看到的非空MySQLscan大概率是之前运行脚本留下的历史文件,不是本次执行的输出结果。 - 脚本缺少执行前清理旧文件的逻辑,历史残留文件会干扰对本次运行结果的判断。
- 补充说明:你当前脚本里将nmap标准输出重定向到
/dev/null的逻辑是有效的,不会影响-oG参数向指定文件写入grepable格式的扫描结果,这部分写法没有问题。
修复方案
- 替换占位符、添加旧文件清理逻辑,修改后的脚本参考如下:
#! /bin/bash # 清理历史运行产生的旧文件 rm -f MySQLscan MySQLscan2 # 请将下方的192.168.56.0/24替换为你实际要扫描的IP/网段,示例值为VirtualBox默认主机网卡网段 nmap -sT 192.168.56.0/24 -p 3306 >/dev/null -oG MySQLscan # 可直接用grep读取文件,无需多余cat管道 grep open MySQLscan > MySQLscan2 cat MySQLscan2
- 若扫描时存在权限不足导致的结果异常,可加sudo执行脚本:
sudo bash 你的脚本文件名.sh
内容的提问来源于stack exchange,提问作者aurumpurum
相关产品推荐
相关产品推荐

