fnos-cli 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +116 -0
- package/README.md +70 -268
- package/bin/fnos +5 -1
- package/docs/commands.md +775 -0
- package/package.json +1 -1
- package/src/commands/auth.js +42 -55
- package/src/commands/catalog/applications.js +30 -0
- package/src/commands/catalog/identity-security.js +52 -0
- package/src/commands/catalog/index.js +21 -0
- package/src/commands/catalog/monitoring.js +40 -0
- package/src/commands/catalog/network-sharing.js +81 -0
- package/src/commands/catalog/storage.js +107 -0
- package/src/commands/catalog/system.js +51 -0
- package/src/commands/index.js +18 -139
- package/src/commands/options.js +128 -0
- package/src/commands/runner.js +37 -0
- package/src/index.js +41 -51
- package/src/utils/auth-helper.js +13 -6
- package/src/utils/client.js +135 -113
- package/src/utils/errors.js +11 -0
- package/src/utils/logger.js +25 -1
- package/src/utils/settings.js +33 -72
- package/src/constants.js +0 -69
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# 变更日志
|
|
2
|
+
|
|
3
|
+
本文档记录 fnos-cli 的所有重要变更。
|
|
4
|
+
|
|
5
|
+
格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/),
|
|
6
|
+
版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
|
|
7
|
+
|
|
8
|
+
## [0.3.0] - 2026-07-20
|
|
9
|
+
|
|
10
|
+
### 新增
|
|
11
|
+
|
|
12
|
+
- 接入 fnos 0.4.0 的 21 个领域和全部 111 条业务命令
|
|
13
|
+
- 支持两步验证、token 重用、WSS endpoint 和 SSL 证书验证
|
|
14
|
+
- 新增基于固定版本 fnos-mock-server 的完整 CLI 冒烟测试
|
|
15
|
+
- 新增自动生成的完整命令参考
|
|
16
|
+
|
|
17
|
+
### 修复
|
|
18
|
+
|
|
19
|
+
- 修复可选位置参数把超时值当成业务参数的问题
|
|
20
|
+
- 修复 `file.ls` 错误要求 `--path` 的问题
|
|
21
|
+
- 对密码、验证码、token、secret 和签名材料执行统一日志脱敏
|
|
22
|
+
- 兼容 fnos 0.4.0 重复请求主机名时响应被握手处理器消费的问题
|
|
23
|
+
|
|
24
|
+
## [0.2.2] - 2026-02-16
|
|
25
|
+
|
|
26
|
+
### 修复
|
|
27
|
+
|
|
28
|
+
- 版本号从 package.json 动态读取,避免硬编码导致版本不同步
|
|
29
|
+
|
|
30
|
+
## [0.2.1] - 2026-02-16
|
|
31
|
+
|
|
32
|
+
### 变更
|
|
33
|
+
|
|
34
|
+
- 升级 fnos 依赖至 0.2.1
|
|
35
|
+
|
|
36
|
+
## [0.2.0] - 2026-02-01
|
|
37
|
+
|
|
38
|
+
### 新增
|
|
39
|
+
|
|
40
|
+
- 所有命令(login 和 logout 除外)支持 `-e/-u/-p` 命令行凭证参数,允许临时使用不同的服务器凭证而不影响已保存的配置
|
|
41
|
+
|
|
42
|
+
### 修复
|
|
43
|
+
|
|
44
|
+
- `logout` 命令现在只清除登录认证配置项,不再删除整个 settings.json 文件
|
|
45
|
+
|
|
46
|
+
## [0.1.0] - 2026-01-30
|
|
47
|
+
|
|
48
|
+
### 新增
|
|
49
|
+
|
|
50
|
+
#### 功能
|
|
51
|
+
- **认证系统**
|
|
52
|
+
- 实现 `login` 命令,支持保存登录凭证
|
|
53
|
+
- 实现 `logout` 命令,支持清除保存的凭证
|
|
54
|
+
- 凭证保存在权限为 600 的 `~/.fnos/settings.json`
|
|
55
|
+
|
|
56
|
+
- **资源监控**
|
|
57
|
+
- `resmon.cpu` - CPU 资源监控
|
|
58
|
+
- `resmon.gpu` - GPU 资源监控
|
|
59
|
+
- `resmon.mem` - 内存资源监控
|
|
60
|
+
- `resmon.disk` - 磁盘资源监控
|
|
61
|
+
- `resmon.net` - 网络资源监控
|
|
62
|
+
- `resmon.gen` - 通用资源监控,支持自定义监控项
|
|
63
|
+
|
|
64
|
+
- **存储管理**
|
|
65
|
+
- `store.general` - 存储通用信息
|
|
66
|
+
- `store.calcSpace` - 计算存储空间
|
|
67
|
+
- `store.listDisk` - 列出磁盘信息,支持过滤热备盘
|
|
68
|
+
- `store.diskSmart` - 获取磁盘 SMART 信息
|
|
69
|
+
- `store.state` - 获取存储状态
|
|
70
|
+
|
|
71
|
+
- **系统信息**
|
|
72
|
+
- `sysinfo.getHostName` - 获取主机名
|
|
73
|
+
- `sysinfo.getTrimVersion` - 获取 Trim 版本
|
|
74
|
+
- `sysinfo.getMachineId` - 获取机器 ID
|
|
75
|
+
- `sysinfo.getHardwareInfo` - 获取硬件信息
|
|
76
|
+
- `sysinfo.getUptime` - 获取系统运行时间
|
|
77
|
+
|
|
78
|
+
- **用户管理**
|
|
79
|
+
- `user.info` - 获取用户信息
|
|
80
|
+
- `user.listUG` - 列出用户和组
|
|
81
|
+
- `user.groupUsers` - 获取用户分组信息
|
|
82
|
+
- `user.isAdmin` - 检查当前用户是否为管理员
|
|
83
|
+
|
|
84
|
+
- **网络管理**
|
|
85
|
+
- `network.list` - 列出网络信息,支持类型过滤
|
|
86
|
+
- `network.detect` - 检测网络接口
|
|
87
|
+
|
|
88
|
+
- **文件操作**
|
|
89
|
+
- `file.ls` - 列出文件和目录
|
|
90
|
+
- `file.mkdir` - 创建目录
|
|
91
|
+
- `file.rm` - 删除文件或目录,支持移动到回收站
|
|
92
|
+
|
|
93
|
+
- **SAC (UPS)**
|
|
94
|
+
- `sac.upsStatus` - 获取 UPS 状态信息
|
|
95
|
+
|
|
96
|
+
#### 全局选项
|
|
97
|
+
- `--raw` - 输出原始 JSON 响应
|
|
98
|
+
- `-v` - 显示 info 级别日志(输出到 stderr)
|
|
99
|
+
- `-vv` - 显示 debug 级别日志(输出到 stderr)
|
|
100
|
+
- `-vvv` - 显示 silly 级别日志(输出到 stderr)
|
|
101
|
+
|
|
102
|
+
#### 帮助系统
|
|
103
|
+
- `fnos --help` - 显示所有一级命令和全局选项
|
|
104
|
+
- `fnos <command> --help` - 显示命令的二级命令列表
|
|
105
|
+
- `fnos <command>.<subcommand> --help` - 显示子命令的详细帮助
|
|
106
|
+
|
|
107
|
+
#### 日志系统
|
|
108
|
+
- Winston 日志框架集成
|
|
109
|
+
- 日志文件自动保存在 `~/.fnos/logs/`
|
|
110
|
+
- 日志文件命名格式:`fnos-YYYY-MM-DD-{random}.log`
|
|
111
|
+
- 支持四级日志级别(error、info、debug、silly)
|
|
112
|
+
|
|
113
|
+
#### 输出格式化
|
|
114
|
+
- 智能格式化输出(对象、数组、基本类型)
|
|
115
|
+
- 支持 JSON 原始输出模式
|
|
116
|
+
- 数组数据表格化显示
|
package/README.md
CHANGED
|
@@ -3,39 +3,26 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/fnos-cli)
|
|
4
4
|

|
|
5
5
|
|
|
6
|
-
飞牛 fnOS
|
|
6
|
+
飞牛 fnOS 系统的命令行客户端,通过 WebSocket/WSS 调用 fnOS API。
|
|
7
7
|
|
|
8
|
-
##
|
|
8
|
+
## 功能
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
- 💾 **存储管理** - 查看存储信息、磁盘列表、SMART 信息
|
|
17
|
-
- ℹ️ **系统信息** - 主机名、版本、硬件信息、运行时间等
|
|
18
|
-
- 👤 **用户管理** - 用户信息、用户组、权限管理
|
|
19
|
-
- 🌐 **网络管理** - 网络接口信息、网络检测
|
|
20
|
-
- 📁 **文件操作** - 文件列表、创建目录、删除文件
|
|
21
|
-
- 🔋 **UPS 监控** - UPS 状态信息
|
|
22
|
-
- 📝 **灵活的输出格式** - 支持 JSON 原始输出和格式化输出
|
|
23
|
-
- 🐛 **多级日志** - 支持 info、debug、silly 三种日志级别
|
|
10
|
+
- 提供 21 个业务领域、111 条查询命令
|
|
11
|
+
- 支持密码登录、token 重用和两步验证
|
|
12
|
+
- 支持 `ws://`、`wss://` 以及可选的严格证书验证
|
|
13
|
+
- 支持原始 JSON 和格式化输出
|
|
14
|
+
- 密码、验证码、token、secret 和签名材料统一日志脱敏
|
|
15
|
+
- 凭证保存在权限为 0600 的本地设置文件中
|
|
24
16
|
|
|
25
17
|
## 安装
|
|
26
18
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
- Node.js >= 16.0.0
|
|
30
|
-
- npm >= 8.0.0
|
|
31
|
-
|
|
32
|
-
### 从 npm 安装
|
|
19
|
+
需要 Node.js 18 或更高版本、npm 8 或更高版本。
|
|
33
20
|
|
|
34
21
|
```bash
|
|
35
22
|
npm install -g fnos-cli
|
|
36
23
|
```
|
|
37
24
|
|
|
38
|
-
|
|
25
|
+
从源码运行:
|
|
39
26
|
|
|
40
27
|
```bash
|
|
41
28
|
git clone <repository-url>
|
|
@@ -44,301 +31,122 @@ npm install
|
|
|
44
31
|
npm link
|
|
45
32
|
```
|
|
46
33
|
|
|
47
|
-
##
|
|
48
|
-
|
|
49
|
-
### 1. 登录
|
|
34
|
+
## 登录与认证
|
|
50
35
|
|
|
51
|
-
|
|
36
|
+
首次使用可保存登录凭证:
|
|
52
37
|
|
|
53
38
|
```bash
|
|
54
|
-
fnos login -e
|
|
39
|
+
fnos login -e nas.example.com:5666 -u admin -p password
|
|
55
40
|
```
|
|
56
41
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
fnos login -e nas-9.timandes.net:5666 -u SystemMonitor -p yourpassword
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
登录成功后,凭证会保存在 `~/.fnos/settings.json` 文件中,后续命令无需重复输入。
|
|
64
|
-
|
|
65
|
-
### 2. 使用命令行凭证参数
|
|
42
|
+
设置写入 `~/.fnos/settings.json`。后续命令会优先重用有效 token;token 失效时回退到密码登录并升级旧凭证格式。
|
|
66
43
|
|
|
67
|
-
|
|
44
|
+
也可为单条业务命令临时提供完整凭证,这些参数不会写入设置:
|
|
68
45
|
|
|
69
46
|
```bash
|
|
70
|
-
fnos
|
|
47
|
+
fnos resmon.cpu -e nas.example.com:5666 -u admin -p password
|
|
71
48
|
```
|
|
72
49
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
```bash
|
|
76
|
-
fnos resmon.cpu -e nas-9.timandes.net:5666 -u SystemMonitor -p yourpassword
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
**注意事项**:
|
|
80
|
-
- 三个参数(`-e`、`-u`、`-p`)必须同时提供,不能只提供部分参数
|
|
81
|
-
- 使用命令行参数提供的凭证**不会**保存到配置文件中,适合临时使用
|
|
82
|
-
- 如果未提供这三个参数,会自动使用已保存的凭证(需要先执行 `login`)
|
|
83
|
-
- 这种方式适合自动化脚本或临时连接到不同服务器
|
|
84
|
-
|
|
85
|
-
### 3. 使用命令
|
|
86
|
-
|
|
87
|
-
登录后即可执行各种命令:
|
|
88
|
-
|
|
89
|
-
```bash
|
|
90
|
-
# 查看 CPU 使用情况
|
|
91
|
-
fnos resmon.cpu
|
|
92
|
-
|
|
93
|
-
# 查看存储信息
|
|
94
|
-
fnos store.general
|
|
95
|
-
|
|
96
|
-
# 查看系统信息
|
|
97
|
-
fnos sysinfo.getHostName
|
|
98
|
-
|
|
99
|
-
# 列出文件
|
|
100
|
-
fnos file.ls --path /home/user
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
### 3. 登出
|
|
104
|
-
|
|
105
|
-
如需清除保存的凭证:
|
|
50
|
+
`-e`、`-u`、`-p` 必须同时提供。退出并只清除认证字段:
|
|
106
51
|
|
|
107
52
|
```bash
|
|
108
53
|
fnos logout
|
|
109
54
|
```
|
|
110
55
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
### 全局选项
|
|
56
|
+
### 两步验证
|
|
114
57
|
|
|
115
|
-
|
|
116
|
-
|------|------|
|
|
117
|
-
| `--raw` | 输出原始 JSON 响应 |
|
|
118
|
-
| `-v` | 显示 info 级别日志(输出到 stderr) |
|
|
119
|
-
| `-vv` | 显示 debug 级别日志(输出到 stderr) |
|
|
120
|
-
| `-vvv` | 显示 silly 级别日志(输出到 stderr) |
|
|
121
|
-
| `-h, --help` | 显示帮助信息 |
|
|
122
|
-
| `-V, --version` | 显示版本信息 |
|
|
123
|
-
|
|
124
|
-
**注意**:
|
|
125
|
-
- 命令结果输出到 **stdout**
|
|
126
|
-
- 所有日志输出到 **stderr**
|
|
127
|
-
- 默认情况下(无 `-v`),只显示错误日志到 stderr
|
|
128
|
-
- 使用 `-v`、`-vv`、`-vvv` 可以控制日志详细程度
|
|
129
|
-
|
|
130
|
-
**输出重定向示例**:
|
|
58
|
+
需要两步验证的账户可在登录或业务命令中提供六位验证码:
|
|
131
59
|
|
|
132
60
|
```bash
|
|
133
|
-
|
|
134
|
-
fnos resmon.cpu > output.json 2>/dev/null
|
|
135
|
-
|
|
136
|
-
# 只保存日志,忽略命令结果
|
|
137
|
-
fnos resmon.cpu -v 2>log.txt 1>/dev/null
|
|
138
|
-
|
|
139
|
-
# 分别保存命令结果和日志
|
|
140
|
-
fnos resmon.cpu -v > output.json 2>log.txt
|
|
141
|
-
|
|
142
|
-
# 查看命令结果,隐藏日志
|
|
143
|
-
fnos resmon.cpu 2>/dev/null
|
|
61
|
+
fnos login -e wss://nas.example.com:5667 -u admin -p password --twofa-code 123456 --trust-device --verify-ssl
|
|
144
62
|
```
|
|
145
63
|
|
|
146
|
-
|
|
64
|
+
验证码不会写入设置或日志。若账户尚未绑定两步验证,CLI 会提示先在 fnOS 网页端完成绑定。
|
|
147
65
|
|
|
148
|
-
|
|
66
|
+
### WSS
|
|
149
67
|
|
|
150
|
-
|
|
151
|
-
|------|------|
|
|
152
|
-
| `-e, --endpoint <endpoint>` | 服务器端点(例如:nas-9.timandes.net:5666) |
|
|
153
|
-
| `-u, --username <username>` | 用户名 |
|
|
154
|
-
| `-p, --password <password>` | 密码 |
|
|
68
|
+
在 endpoint 中直接使用 `wss://`。默认兼容 fnOS 常见的自签名证书;需要严格验证证书时添加 `--verify-ssl`。当 fnOS 把 WS 重定向到 HTTPS 时,错误会同时显示原地址和重定向地址,并提示改用 `wss://`。
|
|
155
69
|
|
|
156
|
-
|
|
70
|
+
## 命令参考
|
|
157
71
|
|
|
158
|
-
|
|
159
|
-
2. **临时使用不保存**:通过命令行参数提供的凭证不会被保存到配置文件
|
|
160
|
-
3. **优先使用命令行参数**:如果同时提供了命令行参数和配置文件中有保存的凭证,优先使用命令行参数
|
|
161
|
-
4. **回退到配置文件**:如果未提供这三个参数,会自动使用 `login` 保存的凭证
|
|
72
|
+
fnos-cli 提供 21 个领域、111 条业务命令。完整参数、类型和默认值见 [命令参考](docs/commands.md)。
|
|
162
73
|
|
|
163
|
-
|
|
74
|
+
常用示例:
|
|
164
75
|
|
|
165
76
|
```bash
|
|
166
|
-
|
|
167
|
-
fnos
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
fnos
|
|
171
|
-
# Error: When using -e/--endpoint, you must also provide -u/--username and -p/--password.
|
|
172
|
-
|
|
173
|
-
# 使用已保存的凭证(需要先执行 login)
|
|
174
|
-
fnos login -e nas-9.timandes.net:5666 -u SystemMonitor -p yourpassword
|
|
175
|
-
fnos resmon.cpu # 不需要再提供参数
|
|
77
|
+
fnos resmon.systemFan
|
|
78
|
+
fnos docker.listContainers --all true
|
|
79
|
+
fnos backup.listTasks --direction 0
|
|
80
|
+
fnos network.getInfo --if-name eth0
|
|
81
|
+
fnos security.getProcessTraffic --processes '[{"pid":1001,"process":"demo"}]'
|
|
176
82
|
```
|
|
177
83
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
| 命令 | 说明 |
|
|
181
|
-
|------|------|
|
|
182
|
-
| `fnos resmon.cpu` | CPU 资源监控 |
|
|
183
|
-
| `fnos resmon.gpu` | GPU 资源监控 |
|
|
184
|
-
| `fnos resmon.mem` | 内存资源监控 |
|
|
185
|
-
| `fnos resmon.disk` | 磁盘资源监控 |
|
|
186
|
-
| `fnos resmon.net` | 网络资源监控 |
|
|
187
|
-
| `fnos resmon.gen --items <items>` | 通用资源监控 |
|
|
188
|
-
|
|
189
|
-
示例:
|
|
190
|
-
|
|
191
|
-
```bash
|
|
192
|
-
fnos resmon.cpu --raw
|
|
193
|
-
fnos resmon.gen --items storeSpeed,netSpeed,cpuBusy,memPercent
|
|
194
|
-
```
|
|
84
|
+
原有 26 条命令名称保持兼容,既有 camelCase 参数也保留为隐藏别名。
|
|
195
85
|
|
|
196
|
-
###
|
|
86
|
+
### 全局选项
|
|
197
87
|
|
|
198
|
-
|
|
|
199
|
-
|
|
200
|
-
| `
|
|
201
|
-
|
|
|
202
|
-
|
|
|
203
|
-
|
|
|
204
|
-
|
|
|
88
|
+
| 选项 | 说明 |
|
|
89
|
+
|---|---|
|
|
90
|
+
| `--raw` | 输出原始 JSON |
|
|
91
|
+
| `-v, --verbose` | 输出 info 日志到 stderr |
|
|
92
|
+
| `-vv, --debug` | 输出 debug 日志到 stderr |
|
|
93
|
+
| `-vvv, --silly` | 输出 silly 日志到 stderr |
|
|
94
|
+
| `-V, --version` | 显示版本 |
|
|
95
|
+
| `-h, --help` | 显示帮助 |
|
|
205
96
|
|
|
206
|
-
|
|
97
|
+
命令结果写入 stdout,日志写入 stderr:
|
|
207
98
|
|
|
208
99
|
```bash
|
|
209
|
-
fnos
|
|
210
|
-
fnos store.diskSmart --disk nvme0n1
|
|
100
|
+
fnos resmon.cpu --raw > result.json 2> fnos.log
|
|
211
101
|
```
|
|
212
102
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
| 命令 | 说明 |
|
|
216
|
-
|------|------|
|
|
217
|
-
| `fnos sysinfo.getHostName` | 获取主机名 |
|
|
218
|
-
| `fnos sysinfo.getTrimVersion` | 获取 Trim 版本 |
|
|
219
|
-
| `fnos sysinfo.getMachineId` | 获取机器 ID |
|
|
220
|
-
| `fnos sysinfo.getHardwareInfo` | 获取硬件信息 |
|
|
221
|
-
| `fnos sysinfo.getUptime` | 获取系统运行时间 |
|
|
103
|
+
## 配置与日志
|
|
222
104
|
|
|
223
|
-
|
|
105
|
+
- `~/.fnos/settings.json`:登录凭证,权限固定为 0600
|
|
106
|
+
- `~/.fnos/logs/`:日志文件目录
|
|
224
107
|
|
|
225
|
-
|
|
226
|
-
|------|------|
|
|
227
|
-
| `fnos user.info` | 获取用户信息 |
|
|
228
|
-
| `fnos user.listUG` | 列出用户和组 |
|
|
229
|
-
| `fnos user.groupUsers` | 获取用户分组信息 |
|
|
230
|
-
| `fnos user.isAdmin` | 检查当前用户是否为管理员 |
|
|
108
|
+
密码目前以本地设置值保存,并非系统钥匙串或加密保险库。请保护用户主目录权限,不要共享设置文件。
|
|
231
109
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
| 命令 | 说明 |
|
|
235
|
-
|------|------|
|
|
236
|
-
| `fnos network.list [--type]` | 列出网络信息 |
|
|
237
|
-
| `fnos network.detect --ifName <name>` | 检测网络接口 |
|
|
110
|
+
## 开发
|
|
238
111
|
|
|
239
|
-
|
|
112
|
+
### 运行测试
|
|
240
113
|
|
|
241
114
|
```bash
|
|
242
|
-
|
|
243
|
-
|
|
115
|
+
npm test # 离线单元测试
|
|
116
|
+
npm run test:smoke # 需要 127.0.0.1:5666 上运行固定版本 fnos-mock-server
|
|
117
|
+
npm run test:all # 单元测试和冒烟测试
|
|
244
118
|
```
|
|
245
119
|
|
|
246
|
-
|
|
120
|
+
冒烟测试固定使用 fnos-mock-server 提交 `d9592a05a8e07082b954921acfae3a9a915f3c01`、Python 3.11 和 `uv`,并设置 `FNOS_MOCK_TWOFA_USERS=twofauser`。
|
|
247
121
|
|
|
248
|
-
|
|
249
|
-
|------|------|
|
|
250
|
-
| `fnos file.ls [--path]` | 列出文件和目录 |
|
|
251
|
-
| `fnos file.mkdir --path <path>` | 创建目录 |
|
|
252
|
-
| `fnos file.rm --files <files> [--moveToTrashbin]` | 删除文件或目录 |
|
|
253
|
-
|
|
254
|
-
示例:
|
|
122
|
+
重新生成命令参考:
|
|
255
123
|
|
|
256
124
|
```bash
|
|
257
|
-
|
|
258
|
-
fnos file.mkdir --path /home/user/newdir
|
|
259
|
-
fnos file.rm --files file1.txt,file2.txt --moveToTrashbin false
|
|
125
|
+
npm run docs:commands
|
|
260
126
|
```
|
|
261
127
|
|
|
262
|
-
### SAC 命令
|
|
263
|
-
|
|
264
|
-
| 命令 | 说明 |
|
|
265
|
-
|------|------|
|
|
266
|
-
| `fnos sac.upsStatus` | 获取 UPS 状态信息 |
|
|
267
|
-
|
|
268
|
-
## 配置文件
|
|
269
|
-
|
|
270
|
-
fnos 将配置和凭证保存在用户主目录下的 `.fnos` 文件夹中:
|
|
271
|
-
|
|
272
|
-
- `~/.fnos/settings.json` - 登录凭证(文件权限 600)
|
|
273
|
-
- `~/.fnos/logs/` - 日志文件目录
|
|
274
|
-
|
|
275
|
-
## 日志
|
|
276
|
-
|
|
277
|
-
### 日志输出
|
|
278
|
-
|
|
279
|
-
- **控制台输出**:所有日志输出到 **stderr**(标准错误流)
|
|
280
|
-
- **文件输出**:日志文件保存在 `~/.fnos/logs/` 目录
|
|
281
|
-
- **命令输出**:命令结果输出到 **stdout**(标准输出流)
|
|
282
|
-
|
|
283
|
-
### 日志级别
|
|
284
|
-
|
|
285
|
-
| 级别 | 说明 | 使用方式 |
|
|
286
|
-
|------|------|----------|
|
|
287
|
-
| `error` | 仅错误信息 | 默认(无 `-v`) |
|
|
288
|
-
| `info` | 常规信息 | 使用 `-v` |
|
|
289
|
-
| `debug` | 调试信息 | 使用 `-vv` |
|
|
290
|
-
| `silly` | 详细信息 | 使用 `-vvv` |
|
|
291
|
-
|
|
292
|
-
### 日志文件
|
|
293
|
-
|
|
294
|
-
日志文件按日期和随机数命名,格式为:`fnos-YYYY-MM-DD-{random}.log`
|
|
295
|
-
|
|
296
|
-
日志文件始终记录所有级别的日志(从 error 到 silly),不受 `-v` 参数影响。
|
|
297
|
-
|
|
298
|
-
### 默认行为
|
|
299
|
-
|
|
300
|
-
- **不使用 `-v`**:只显示错误日志到 stderr,命令结果输出到 stdout
|
|
301
|
-
- **使用 `-v`**:显示 info 及以上级别的日志到 stderr
|
|
302
|
-
- **使用 `-vv`**:显示 debug 及以上级别的日志到 stderr
|
|
303
|
-
- **使用 `-vvv`**:显示所有级别的日志到 stderr
|
|
304
|
-
|
|
305
|
-
这种设计遵循 Unix 工具的最佳实践,让用户可以灵活地分别处理命令输出和日志。
|
|
306
|
-
|
|
307
|
-
## 开发
|
|
308
|
-
|
|
309
128
|
### 项目结构
|
|
310
129
|
|
|
311
|
-
```
|
|
130
|
+
```text
|
|
312
131
|
fnos-cli/
|
|
313
|
-
├── bin/
|
|
314
|
-
│ └── fnos # 可执行文件
|
|
132
|
+
├── bin/fnos
|
|
315
133
|
├── src/
|
|
316
|
-
│ ├── commands/
|
|
317
|
-
│ │ ├──
|
|
318
|
-
│ │
|
|
319
|
-
│ ├──
|
|
320
|
-
│ │
|
|
321
|
-
│
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
│ └── index.js # CLI 入口
|
|
326
|
-
├── constitution.md # 项目原则
|
|
327
|
-
├── package.json # 项目配置
|
|
328
|
-
└── README.md # 本文件
|
|
329
|
-
```
|
|
330
|
-
|
|
331
|
-
### 运行测试
|
|
332
|
-
|
|
333
|
-
```bash
|
|
334
|
-
npm test
|
|
134
|
+
│ ├── commands/
|
|
135
|
+
│ │ ├── catalog/
|
|
136
|
+
│ │ ├── auth.js
|
|
137
|
+
│ │ ├── options.js
|
|
138
|
+
│ │ └── runner.js
|
|
139
|
+
│ └── utils/
|
|
140
|
+
├── scripts/generate-command-reference.js
|
|
141
|
+
├── docs/commands.md
|
|
142
|
+
└── test/
|
|
335
143
|
```
|
|
336
144
|
|
|
337
145
|
## 依赖项
|
|
338
146
|
|
|
339
|
-
- [fnos](https://www.npmjs.com/package/fnos) @ 0.
|
|
340
|
-
- [
|
|
341
|
-
- [
|
|
147
|
+
- [fnos](https://www.npmjs.com/package/fnos) @ 0.4.0
|
|
148
|
+
- [Commander.js](https://www.npmjs.com/package/commander) @ 11.1.0
|
|
149
|
+
- [Winston](https://www.npmjs.com/package/winston) @ 3.19.0
|
|
342
150
|
|
|
343
151
|
## 许可证
|
|
344
152
|
|
|
@@ -346,10 +154,4 @@ Apache License 2.0
|
|
|
346
154
|
|
|
347
155
|
## 贡献
|
|
348
156
|
|
|
349
|
-
欢迎提交 Issue 和 Pull Request
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
## 致谢
|
|
353
|
-
|
|
354
|
-
感谢 飞牛fnOS 团队提供的优质NAS系统。
|
|
355
|
-
|
|
157
|
+
欢迎提交 Issue 和 Pull Request。
|
package/bin/fnos
CHANGED