Files
kenaito-kopsc/README.net.md
T
odboy 400812d114 feat: 新增 file/svc/archive/sys/log/fw 分组并扩充 net、proc
- file:findbig 按大小、findrecent 按修改时间、findname 按名称查找文件
- svc:systemctl / launchctl / sc 统一接口,status、enable、disable、logs
- archive:按扩展名自动识别格式并解压,支持 tar.gz/tgz/tar.bz2/tar.xz/tar/zip/gz
- sysinfo:OS、CPU、内存、磁盘一览
- log:journalctl / log show / wevtutil 搜索关键字与查看最近日志
- fw:ufw / firewalld / iptables / ALF / netsh 统一接口,status、allow、deny
- net 新增 ping、trace(mtr 优先)、dns(dig 优先)、curl HTTP 诊断
- proc 新增 topmem、topcpu、killname
- 危险操作(svc enable/disable、proc killname、fw allow/deny)需 --yes 确认
- 注册表、executor 派发表、cli 分组说明与 README 同步更新
2026-11-02 22:42:18 +08:00

126 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 网络与端口(`kopsc net <子命令>`)
> 返回 [README.md](README.md)
查看端口被谁占用、本机监听了哪些端口、测试连通性、DNS 查询、路由追踪、HTTP 诊断。
```bash
kopsc net pids 8080 # 谁占用了 8080 端口(输出 PID)
kopsc net ports # 本机正在监听哪些端口(统一表格)
kopsc net ping example.com # 测试连通性
kopsc net trace example.com # 路由追踪
kopsc net dns example.com # DNS 查询
kopsc net curl https://example.com # HTTP 诊断
```
## 端口占用查询(net.pids)
`kopsc net pids <端口>` 等价 `lsof -ti:<端口>`:输出占用该端口的进程 PID,每行一个、升序、去重。
```bash
kopsc net pids 8080
kopsc net pids --port 8080
kopsc net pids 8080 --pid-file /tmp/web.pid # 同时写出逗号分隔的 PID
kopsc net pids 8080 --dry-run
```
- 没有进程占用时 **stdout 仍为空**、退出码仍为 0,但会在 stderr 说明「没有进程占用端口 N」,
避免命令行下对着空输出发懵;脚本读 stdout 不受影响。
- `--pid-file <路径>`:把 PID 以逗号分隔写进文件(如 `123,456`),无占用时写空文件,
便于 `kill $(cat web.pid)`;写完会在 stderr 提示位置。
底层按平台自动选择,但对外的命令与输出保持一致:
| 平台 | 依次尝试的底层来源 |
| --- | --- |
| Linux | `lsof -ti:<port>` → `ss -H -t -u -n -p`(解析 `pid=`) → 读 `/proc/net/*` 与 `/proc/*/fd`(纯内置,零外部依赖) |
| macOS | `lsof -ti:<port>`(系统自带,无 `/proc` 回退) |
| Windows | `netstat -ano`(解析本地地址与 PID) |
- 端口必须是 1–65535;非法端口直接报错,不执行任何外部命令。
- `lsof` 无匹配时退出码为 1 且无输出,kopsc 视为「没有进程占用」,返回 0。
- 只读命令,不需要 `--yes`。
## 监听端口(net.ports)
`kopsc net ports` 列出本机正在监听的端口,**默认输出跨平台一致的表格**(按端口升序):
```text
$ kopsc net ports
端口 协议 地址 PID 进程
22 TCP 0.0.0.0 901 sshd
6379 TCP 127.0.0.1 1500 redis-server
53 UDP 0.0.0.0 - -
```
- 三个平台底层分别使用 `ss -tulnp`(Linux)、`lsof -iTCP -sTCP:LISTEN -nP`(macOS)、
`netstat -ano`(Windows),kopsc 解析后统一成同一张表;取不到属主时显示 `-`。
- 通配地址 `0.0.0.0` 与 `::` 统一显示为 `*`。
- `--raw` 保留平台原生命令的原始输出,供依赖原生格式的脚本使用。
- 没有监听端口时 stdout 为空,stderr 提示「没有正在监听的端口」。
## 连通性测试(net.ping)
```bash
kopsc net ping example.com # 默认 4 个包
kopsc net ping example.com -c 10 # 发送 10 个包
```
底层调用系统 `ping` 命令。
## 路由追踪(net.trace)
```bash
kopsc net trace example.com
```
优先使用 `mtr --report`(最佳输出),回退到 `traceroute`(Linux/macOS)或 `tracert`(Windows)。
## DNS 查询(net.dns)
```bash
kopsc net dns example.com # 默认 A 记录
kopsc net dns example.com -t MX # 查询 MX 记录
kopsc net dns example.com -t AAAA # 查询 AAAA 记录
kopsc net dns example.com -s 8.8.8.8 # 指定 DNS 服务器
```
优先使用 `dig`,回退到 `nslookup` 或 `host`。
### 选项
| 选项 | 说明 |
| --- | --- |
| `-t` / `--type` | 记录类型(A/AAAA/MX/CNAME 等) |
| `-s` / `--server` | DNS 服务器地址 |
## HTTP 诊断(net.curl)
```bash
kopsc net curl https://example.com # 基本诊断
kopsc net curl https://example.com -L # 跟随重定向
kopsc net curl https://api.example.com -X POST -H "Content-Type: application/json"
```
输出示例:
```
HTTP 状态码: 200
重定向次数: 0
DNS 解析: 0.005s
TCP 连接: 0.032s
TLS 握手: 0.089s
首字节: 0.145s
总耗时: 0.146s
下载大小: 1234 bytes
下载速度: 8452.05 bytes/s
```
### 选项
| 选项 | 说明 |
| --- | --- |
| `-L` / `--follow` | 跟随重定向 |
| `-X` / `--method` | HTTP 方法(GET/POST/PUT 等) |
| `-H` / `--header` | 添加请求头,可重复 |