fnos-cli 0.2.0 → 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 +72 -267
- 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
|
@@ -1,38 +1,28 @@
|
|
|
1
1
|
# fnos-cli
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/fnos-cli)
|
|
4
|
+

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