惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
月光博客
月光博客
B
Blog RSS Feed
C
Check Point Blog
WordPress大学
WordPress大学
T
Tailwind CSS Blog
GbyAI
GbyAI
H
Help Net Security
Y
Y Combinator Blog
I
InfoQ
雷峰网
雷峰网
阮一峰的网络日志
阮一峰的网络日志
小众软件
小众软件
美团技术团队
博客园 - 三生石上(FineUI控件)
MongoDB | Blog
MongoDB | Blog
Jina AI
Jina AI
A
About on SuperTechFans
G
Google Developers Blog
爱范儿
爱范儿
F
Fortinet All Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
U
Unit 42
人人都是产品经理
人人都是产品经理

博客园 - dirgo

springboot里的application.yml文件的logging:下的配置 Flutter的SDK国内下载方法及AndroidStudio配置打包方法 minio数据迁移方法 [转]flutter入门 Elasticsearch介绍以及在spring项目里的使用方法 moxa NPort 5100 Linux real tty驱动安装 VirtualBox 的网络模式 Oracle关联表删除数据和更新数据 logback-spring.xml引入了base.xml日志文件默认生成在哪里? application.yml中Logback相关配置 org/springframework/boot/logging/logback/defaults.xml的内容和作用 logback-spring.xml 中<include resource="org/springframework/boot/logging/logback/base.xml"/>作用 Spring Boot 项目 Logback 日志框架配置文件logback-spring.xml详解 Oracle DataBaseLink 提示密码过期 梅特勒托-托利多衡器串口连续输出数据格式的说明 utf-8编码详解 mybaits updateWrapper更新报错:无效的列类型: 1111 @RequestPart和@RequestParam有什么区别 如何避免Mass Assignment漏洞? 关于vxe-table v4 导出大数据量excel浏览器卡死问题的解决 开源的Linux换源和安装docker脚本 wsl常用命令 使用网页静默打印 在Oracle中,授予用户角色和权限 Linux下查看当前哪些端口在监听状态,哪些端口在连接状态 mobaxterm常用配置 Windows下udp工具 Oracle表空间用户授权创建dblink等操作 Oracle 19c 常用运维 SQL Linux下设置CDB/PDB 环境的Oracle19c开机启动
用nmap扫描找出某个网段下空闲的ip脚本
dirgo · 2026-03-02 · via 博客园 - dirgo

Linux系统下

把下面内容保存为scan_unused.sh(注意改开头的 BASE 和 NETMASK):

#!/bin/bash
set -e

NET="192.168.1.0/24"
BASE="192.168.1"

echo "[1] 生成网段所有 IP ..."
seq 1 254 | while read i; do echo "${BASE}.${i}"; done > all_ips.txt

echo "[2] 使用 nmap 扫描在线主机 ..."
nmap -sn -oG scan.gnmap "${NET}"

echo "[3] 提取在线 IP ..."
grep "Status: Up" scan.gnmap | awk '{print $2}' > live_ips.txt

echo "[4] 计算空闲 IP ..."
grep -vFf live_ips.txt all_ips.txt > unused_ips.txt

echo "扫描完成:"
echo "  在线主机: $(wc -l < live_ips.txt)"
echo "  空闲 IP:  $(wc -l < unused_ips.txt)"
echo "结果文件: live_ips.txt unused_ips.txt"

windows下

把下面内容保存为 scan_subnet.bat(注意改开头的 BASE 和 NETMASK):

@echo off
setlocal enabledelayedexpansion

:: ===== 配置网段 =====
set BASE=192.168.1
set NETMASK=255.255.255.0
:: 只扫 1-2540255 通常不作为主机地址

:: 1. nmap 主机发现(grepable 输出)
echo [1] 正在使用 nmap 扫描网段 ...
nmap -sn -oG scan.gnmap %BASE%.0/24

:: 2. 从 scan.gnmap 中提取 Status: Up 的 IP
echo [2] 提取在线 IP ...
findstr "Status: Up" scan.gnmap > live_raw.txt

:: 3. 从 live_raw.txt 中整理出纯 IP 列表 live_ips.txt
(
    for /f "tokens=2 delims= " %%a in (live_raw.txt) do (
        echo %%a
    )
) > live_ips.txt

:: 4. 生成整个网段的 IP 列表 all_ips.txt
echo [3] 生成整个网段 IP 列表 ...
(
    for /l %%i in (1,1,254) do (
        echo %BASE%.%%i
    )
) > all_ips.txt

:: 5. 做差集:从 all_ips 中去掉 live_ips,得到 unused_ips.txt
echo [4] 计算空闲 IP ...
findstr /v /x /g:live_ips.txt all_ips.txt > unused_ips.txt

echo.
echo 扫描完成:
echo   在线主机列表: live_ips.txt
echo   全部网段 IP:  all_ips.txt
echo   空闲 IP 列表: unused_ips.txt