一个面向局域网的轻量扫描 CLI,支持:
- 扫描网段内在线设备(
icmp) - 扫描网段内开放指定端口的设备(
tcp)
全部输出为中文,适合直接在终端使用或被脚本调用。
- 基于
uv tool install本地安装,不污染系统 Python 包环境 - 支持 IPv4 CIDR 网段输入(如
192.168.1.1/24) - 端口表达式支持:
- 单端口:
443 - 多端口:
80,443,8080 - 端口范围:
20-1024 - 多参数端口:
53 80 443(等价于53,80,443)
- 单端口:
- 输出稳定排序:
- 设备按 IP 升序
- 每台设备端口按升序
- 在无 ICMP 权限环境下(如常见 WSL 场景)自动降级为高速无特权探测,
icmp命令仍可用
- Python
>=3.12 uv(用于安装与运行)
在项目根目录执行:
uv tool install .如果你更新了代码或版本号,执行:
uv tool install --force .portscan49 icmp 192.168.1.1/24示例输出:
在线设备:
192.168.1.1 36.46毫秒
192.168.1.124 8.57毫秒
192.168.1.200 7.96毫秒
portscan49 tcp 192.168.1.1/24 443portscan49 tcp 192.168.1.1/24 53,80,443portscan49 tcp 192.168.1.1/24 53 80 443示例输出:
开放端口设备:
192.168.1.1 80
192.168.1.124 80
192.168.1.200 53,80,443
- 输入:一个 IPv4 CIDR 网段
- 输出:在线设备 IP + 毫秒延迟
- 说明:
- 优先走 ICMP 探测
- 若当前环境无 ICMP socket 权限,会自动降级到无特权并发探测
- 输入:IPv4 CIDR + 端口表达式
- 输出:开放目标端口的设备与端口列表
- 支持混合表达式,例如:
portscan49 tcp 192.168.1.1/24 22,80-82 443- 参数错误:返回退出码
2,并输出中文错误信息 - 未发现结果:返回退出码
0,并输出中文提示(如“未发现在线设备”)
- 内部使用
asyncio并发扫描 - TCP 扫描默认高并发,适合 /24 等常见网段快速探测
- 实际耗时受网络质量、目标设备响应与主机性能影响
- 仅支持 IPv4 CIDR(不支持 IPv6)
- 结果只在当前网络可达范围内有效
- ICMP 权限策略受操作系统配置影响
运行测试:
uv run pytest -q当前测试覆盖端口解析、参数校验、扫描核心流程与 CLI 行为。