neoss:用优雅的终端 UI 掌控你的网络连接
引言
在开发过程中,我们经常需要查看系统的网络连接状态。传统的 ss 或 netstat 命令虽然功能强大,但输出往往密密麻麻,不够直观。今天给大家介绍一个轻量级却功能丰富的替代品 —— neoss。
什么是 neoss?
neoss 是一个用 TypeScript 编写的终端 UI 工具,旨在以更友好的方式展示系统的 socket 统计信息。它提供了一个交互式的界面,让你可以轻松地查看、排序和导航 TCP/UDP 连接信息。
- ⭐ 219 Stars - 小而美的开源项目
- 🔧 TypeScript - 类型安全,代码质量高
- 📦 npm 全局安装 - 一行命令即可使用
- 🖥️ Terminal UI - 基于 blessed 的优雅界面
为什么需要它?
传统命令的痛点
$ ss -tuln
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 0.0.0.0:68 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 128 [::]:22 [::]:*
原生 ss 的输出虽然信息完整,但:
- ❌ 需要记忆大量参数
- ❌ 输出格式固定,难以筛选
- ❌ 缺乏交互性,无法实时刷新
- ❌ 没有详细信息解释
neoss 的优势
neoss 用一个清晰的表格界面解决了这些问题:
| 特性 | 说明 |
|---|---|
| 📊 可视化表格 | 所有连接一目了然 |
| 🔄 实时刷新 | 按 r 键即可刷新数据 |
| 🔍 交互式导航 | 方向键选择,Enter 查看详情 |
| 📋 详细信息 | 协议定义、连接状态、Whois 查询 |
| 🎯 排序功能 | 按任意列排序 |
安装与使用
安装
npm install -g neoss
基本使用
# 直接运行
neoss
快捷键
| 快捷键 | 功能 |
|---|---|
Esc / q / Ctrl+C | 退出程序 |
r | 刷新统计数据 |
s | 按当前列排序 |
Enter | 打开/关闭选中单元格的详细信息 |
↑↓←→ | 导航选择 |
深度解析:你能看到什么?
基础统计
neoss 会列出所有正在使用的 TCP 和 UDP socket,包括:
- 协议类型 (TCP/UDP)
- 连接状态 (LISTEN, ESTABLISHED, TIME_WAIT 等)
- 本地地址和端口
- 远程地址和端口
- 接收/发送队列大小
详细信息面板
选中任意条目按 Enter,neoss 会展示丰富的解释信息:
- 协议定义 - 这个协议是做什么的?
- 连接状态含义 - LISTEN、ESTABLISHED 代表什么?
- 端口标准 - 这个端口的标准用途是什么?
- 域名解析 - 自动解析 IP 对应的域名
- Whois 查询 - 域名和 IP 的注册信息
- 进程信息 - 哪个用户、什么进程在使用这个连接
对于学习网络知识和排查问题非常有帮助!
技术亮点
为什么选择这个项目?
从代码质量的角度来看,neoss 有几个值得学习的地方:
- TypeScript 类型安全 - 完整的类型定义,降低运行时错误
- 模块化设计 - 清晰的代码结构,易于维护和扩展
- 测试覆盖 - 包含自动化测试
- 持续更新 - 作者积极维护,最近还在更新
- BSD 开源协议 - 宽松的开源协议,可以放心使用
依赖选择
项目使用了成熟的技术栈:
- blessed - 终端 UI 库,提供了丰富的交互组件
- TypeScript - 类型安全的 JavaScript 超集
- npm - 便捷的发布和安装渠道
适用场景
🐛 调试网络问题
当应用无法连接外部服务时,快速查看端口占用情况:
neoss
# 查找对应端口,查看连接状态
📚 学习网络知识
通过详细信息面板,了解不同协议和端口的作用,是网络知识学习的实用工具。
🔒 安全审计
快速扫描系统开放端口,检查是否有异常连接。
🚀 开发调试
查看开发服务器的监听状态,确认服务是否正常启动。
类似工具对比
| 工具 | 特点 | 适用场景 |
|---|---|---|
| neoss | 交互式 UI,详细信息 | 日常开发、学习 |
| ss | 功能全面,原生工具 | 脚本自动化 |
| netstat | 经典工具,兼容性好 | 传统系统 |
| lsof | 查看进程打开的文件 | 进程级排查 |
| iftop | 实时流量监控 | 带宽分析 |
结语
neoss 是一个典型的 “小而美” 的开源工具。它没有试图替代 ss 的所有功能,而是专注于提供友好的交互体验和帮助理解网络知识这两个核心目标。
对于日常开发工作,219 个 Stars 的 neoss 已经足够实用。它的设计理念值得学习:不是功能越多越好,而是在特定场景下做到极致。
如果你经常需要查看网络连接状态,不妨试试这个工具。毕竟,在终端里优雅地工作,是每一位开发者的追求 🎯
链接
- 🐙 GitHub: https://github.com/PabloLec/neoss
- 📦 npm:
npm install -g neoss
本文是「每日技术精选」系列的一部分,专注于发掘 star < 1000 的优质开源项目。