#!/bin/bash # 檢查是否提供了 IP 地址作為參數 if [ -z "$1" ]; then echo "用法: $0 [output_file]" exit 1 fi TARGET_IP=$1 OUTPUT_FILE=$2 # 執行全端口掃描,將結果保存到臨時文件中 echo "開始全端口掃描目標 $TARGET_IP ..." sudo nmap -p- $TARGET_IP -oN all_ports_scan.txt # 提取開放端口 echo "提取開放端口..." open_ports=$(grep "open" all_ports_scan.txt | awk -F/ '{print $1}' | tr '\n' ',' | sed 's/,$//') # 檢查是否有開放端口 if [ -z "$open_ports" ]; then echo "沒有找到開放端口。" rm -f all_ports_scan.txt exit 1 fi echo "開放端口: $open_ports" # 構建詳細掃描命令 SCAN_COMMAND="sudo nmap -A -p $open_ports $TARGET_IP" # 執行詳細掃描並處理輸出 if [ -n "$OUTPUT_FILE" ]; then echo "開始詳細掃描開放端口 $open_ports,並將結果輸出到 $OUTPUT_FILE ..." $SCAN_COMMAND -oN "$OUTPUT_FILE" else echo "開始詳細掃描開放端口 $open_ports ..." $SCAN_COMMAND fi # 清理臨時文件 rm -f all_ports_scan.txt echo "掃描完成。"