Skip to main content
Version: TOS 7

TOS CLI

CLI 已预装于 TOS 7 及以上系统,用户可直接在终端中执行 tos 命令,无需额外安装。

简介​

TOS 7 CLI 是铁威马 TOS 7 系统的命令行管理工具,提供与 Web 管理界面等价的操作能力。作为 TOS 开发者平台的核心组件之一,CLI 工具通过标准化的命令接口和 JSON 输出格式,可轻松集成于各类开发、测试、自动化运维及二次开发工作流中。

主要特点​

  • 开箱即用:已集成在 TOS 系统中,无需额外安装
  • 调用方式灵活:支持本地终端、远程 Shell、脚本、AI 工具等多种调用途径
  • 交互与非交互双模式:既适合管理员日常维护,也适合脚本和自动化任务
  • JSON 输出支持:便于程序解析和 CI/CD 集成
  • 会话缓存:一次登录,后续命令自动复用会话
  • 全面管理能力:涵盖系统、存储、网络、用户、应用、服务等全方位管理

快速开始​

# 在终端中执行(可通过本地终端、SSH、脚本、AI 工具等任意命令行途径)
tos --help

# 查看系统信息(无需认证)
tos info

# 查看文件服务状态(无需认证)
tos fileservice status

# 以 JSON 格式输出(便于脚本解析)
tos info --json

全局选项​

以下选项适用于所有命令:

选项简写说明
--help-显示命令帮助信息
--version-v显示版本号(可搭配 --json 输出结构化信息)
--json-输出 JSON 格式(仅查询类命令支持)
--yes-y跳过高风险操作的确认提示(非交互模式必须使用)
--debug-启用调试输出,显示详细执行过程
--user-u指定用户名(覆盖环境变量)
--pass-P指定密码(覆盖环境变量)
--token-指定会话 Token(覆盖环境变量和缓存)

版本信息示例​

tos --version
TOS CLI 1.0.7
TOS 7.0.0
Build 20260624
tos --version --json
{
"cli_version": "1.0.7",
"tos_version": "7.0.0",
"build": "20260624"
}

认证与会话管理​

大部分远程命令(用户管理、存储管理、应用中心、风扇控制、日志管理等)需要通过 HTTP 与 TOS 守护进程通信,需要认证。

本地命令(如 tos info、tos fileservice、tos ssh status、tos service 等)直接读取系统文件或调用 systemd,无需认证。

认证方式优先级(从高到低)​

  1. 命令行标志 --user/--pass 或 --token
  2. 环境变量 TOS_TOKEN
  3. 环境变量 TOS_USER/TOS_PASS
  4. 缓存会话文件 ~/.tos/session.json
  5. 交互式提示输入

方式一:会话缓存(推荐日常使用)​

使用 tos login 一次登录,后续命令自动复用缓存会话(存储于 ~/.tos/session.json,权限 0600,密码使用 RSA 加密存储)。

# 交互式登录(提示输入用户名和密码)
tos login

# 非交互式登录
tos login -u admin -P yourpassword

# 后续命令无需再提供凭据
tos disk list
tos user list --json

# 清除缓存的会话
tos logout

方式二:Token 模式(适合 CI/CD 和无状态环境)​

生成便携 Token,通过环境变量传入。

# 生成 Token(仅输出 Token 字符串)
tos login -u admin -P yourpassword --token-only
# 输出示例: tos_v1.eyJ2ZXJzaW9uIjoxLC...

# 通过环境变量传入 Token
export TOS_TOKEN="tos_v1.eyJ2ZXJzaW9uIjoxLC..."
tos disk list --json

方式三:命令行标志或环境变量(传统方式)​

# 命令行标志
tos user list --user admin --pass yourpassword

# 环境变量
export TOS_USER=admin
export TOS_PASS=yourpassword
tos user list

环境变量参考​

变量名说明默认值
TOS_DAEMON_URL守护进程地址http://localhost:5050
TOS_USER登录用户名-
TOS_PASS登录密码(明文,有泄露风险)-
TOS_TOKEN会话 Token(由 tos login --token-only 生成)-
TOS_SESSION_DIR会话文件存储目录~/.tos

命令分类与权限说明​

命令是否需要认证,取决于该命令是否需要与守护进程通信:

是否需要认证命令组
无需认证info、ssh、buzzer、fileservice、service、firewall(status/enable/disable)、reboot、poweroff、version
需要认证user、user-group、fan、log、update、shared-folder、app、disk、array、volume、storage info、network info、firewall rule、tnas-online

命令汇总表​

以下是所有 tos 命令的快速参考汇总:

父命令子命令功能说明认证高风险
tos--version显示版本信息否否
tosinfo显示系统总览信息(TOS 版本、硬件、CPU、内存、温度、风扇)否否
tosreboot重启系统是✅
tospoweroff安全关机是✅
tos sshstatus查看 SSH 服务状态和端口否否
tos sshenable启用 SSH 服务否否
tos sshdisable禁用 SSH 服务否✅
tos buzzerstatus查看蜂鸣器告警状态否否
tos buzzerenable启用蜂鸣器告警否否
tos buzzerdisable禁用蜂鸣器告警否否
tos fanstatus查看风扇控制模式和转速是否
tos fanset-mode设置风扇控制模式(auto/low/mid/high)是否
tos firewallstatus查看防火墙启用状态否否
tos firewallenable启用防火墙否否
tos firewalldisable禁用防火墙否✅
tos firewallrule列出防火墙规则是否
tos fileservicestatus查看文件服务状态(smb/nfs/ftp/webdav/rsync)否否
tos fileserviceenable启用文件服务否否
tos fileservicedisable禁用文件服务否✅
tos servicelist列出系统服务(smb/nfs/ftp/sftp/rsync/ssh/telnet/webdav/webdavs)否否
tos servicestart启动系统服务否否
tos servicestop停止系统服务否✅
tos servicerestart重启系统服务否否
tos serviceset设置服务开机自启动否否
tos storageinfo显示存储总体信息(磁盘/阵列/卷/Hyper Cache 状态)是否
tos disklist列出所有磁盘是否
tos diskmount挂载磁盘是否
tos diskunmount卸载磁盘是✅
tos arraylist列出所有存储阵列是否
tos arraymount挂载存储阵列是否
tos arraydelete删除存储阵列是✅
tos volumelist列出所有卷是否
tos volumemount挂载卷是否
tos volumedelete删除卷是✅
tos shared-folderlist列出共享文件夹是否
tos shared-foldershow显示共享文件夹详情是否
tos shared-folderadd添加共享文件夹是否
tos shared-folderdelete删除共享文件夹是✅
tos userlist列出本地用户是否
tos useradd创建本地用户是否
tos userdelete删除本地用户是✅
tos useronline显示当前在线用户是否
tos user-grouplist列出本地用户组是否
tos user-groupadd创建本地用户组是否
tos user-groupdelete删除本地用户组是✅
tos applist列出所有应用是否
tos appinfo显示应用详情是否
tos appinstall安装应用是✅
tos appuninstall卸载应用是✅
tos appupdate更新应用是✅
tos appenable启用应用是否
tos appdisable禁用应用是✅
tos appstatus检查应用状态是否
tos networkinfo查看系统网络配置信息是否
tos tnas-onlineinfo查看 tnas.online 远程访问状态是否
tos tnas-onlineenable启用 tnas.online 远程访问是✅
tos tnas-onlinedisable禁用 tnas.online 远程访问是✅
tos logview查看系统日志是否
tos logclear清除系统日志是✅
tos logexport导出系统日志为 CSV 文件是否
tos updatecheck检查系统更新是否
tos updateinstall安装系统更新是✅
toslogin登录并缓存会话否否
toslogout清除缓存的会话否否

命令参考​

一、系统信息与状态​

tos info – 系统总览​

显示 TOS 版本、硬件、CPU、内存、温度、风扇等综合信息。

tos info [--json]

输出示例(表格):

PROPERTY       VALUE
TOS Version 7.0.0447
BIOS Version 6.00
Model F4-424
Uptime 12 days 05:34:48
IP Address 192.168.1.20
CPU Model Intel N95
CPU Usage 18%
Memory Total 8 GB
Memory Usage 42%
System Temp 41 °C
CPU Temp 52 °C
Fan Speed 1200 RPM

JSON 输出(tos info --json):

{
"tos_version": "7.0.0447",
"bios_version": "6.00",
"model": "F4-424",
"uptime": "12 days 05:34:48",
"ip_address": "192.168.1.20",
"cpu_model": "Intel N95",
"cpu_usage": 18,
"memory_total": "8 GB",
"memory_usage": 42,
"system_temperature": 41,
"cpu_temperature": 52,
"fan_speed": 1200
}

温度和风扇信息依赖硬件传感器,虚拟机或无传感器设备显示 -(JSON 中为 null)。

二、系统管理(重启/关机)​

注意:reboot 和 poweroff 为远程命令,需要认证。

tos reboot – 重启系统(高风险)​

tos reboot [--yes]
  • 交互模式会询问确认,非交互必须加 --yes
  • 通过 daemon API PUT /system/reboot 执行
  • 输出:Reboot scheduled

tos poweroff – 安全关机(高风险)​

tos poweroff [--yes]
  • 交互模式会询问确认,非交互必须加 --yes
  • 通过 daemon API PUT /system/poweroff 执行
  • 输出:Power off scheduled

三、SSH 服务管理​

父命令:tos ssh(本地命令,无需认证)

tos ssh status – 查看 SSH 状态​

tos ssh status [--json]

输出示例:

PROPERTY     VALUE
SSH Status enabled
Port 22

tos ssh enable – 启用 SSH​

tos ssh enable [--port <port>]
  • --port 指定端口,默认 22
  • 动作:写入端口配置到 /etc/ssh/sshd_config,执行 systemctl enable + systemctl start
  • 输出:SSH enabled on port 22

tos ssh disable – 禁用 SSH(高风险)​

tos ssh disable [--yes]
  • 高风险操作:可能断开当前远程会话
  • 交互模式显示确认提示,非交互模式必须传 --yes
  • 输出:SSH disabled

四、蜂鸣器管理​

父命令:tos buzzer(本地命令,无需认证)

tos buzzer status – 查看蜂鸣器状态​

tos buzzer status [--json]

输出示例:

PROPERTY        VALUE
Buzzer Status enabled

tos buzzer enable – 启用蜂鸣器​

tos buzzer enable
  • 启动蜂鸣器警报脚本(/etc/tos/scripts/warnning)
  • 若蜂鸣器已启用则返回冲突错误(退出码 4)
  • 输出:Buzzer enabled

tos buzzer disable – 禁用蜂鸣器​

tos buzzer disable
  • 输出:Buzzer disabled

五、风扇控制​

父命令:tos fan(远程命令,需认证)

tos fan status – 查看风扇状态​

tos fan status [--json]

输出示例:

PROPERTY      VALUE
Fan Control enabled
Mode auto
Speed 1200 RPM

tos fan set-mode – 设置风扇模式​

tos fan set-mode --mode <auto|low|mid|high>

模式说明:

模式说明
auto智能模式(系统自动调节)
low低速(安静)
mid中速
high高速(最大散热)
  • 设置模式时保留现有蜂鸣器配置不变
  • 输出:Fan mode set to auto

六、防火墙管理​

父命令:tos firewall(混合模式)

子命令说明认证
status查看防火墙启用状态无需认证
enable启用防火墙无需认证
disable禁用防火墙(高风险)无需认证
rule列出防火墙规则需要认证

tos firewall status – 查看防火墙状态​

tos firewall status [--json]

输出示例:

PROPERTY          VALUE
Firewall Status enabled

tos firewall enable – 启用防火墙​

tos firewall enable
  • 执行 systemctl enable + systemctl start iptables.service
  • 若已启用则输出 Firewall already enabled 并返回 0(幂等)
  • 输出:Firewall enabled

tos firewall disable – 禁用防火墙(高风险)​

tos firewall disable [--yes]
  • 高风险操作:禁用防火墙将暴露所有网络端口
  • 交互模式显示确认提示,非交互模式必须传 --yes
  • 若已禁用则输出 Firewall already disabled 并返回 0(幂等)
  • 输出:Firewall disabled

tos firewall rule – 列出防火墙规则​

tos firewall rule [--detail] [--json]
  • 从守护进程 API 获取规则列表
  • --detail 增加 DESTINATION 和 DESCRIPTION 列
  • 兼容别名:tos firewall list

输出示例:

RULE ID   ACTION   PROTOCOL   SOURCE       PORT
1 allow tcp 0.0.0.0/0 22

七、文件服务管理​

父命令:tos fileservice(别名 tos fs)

本地命令,无需认证。直接通过读写 /etc/tos/config/*.json 配置文件和控制 systemd 单元来管理服务。

支持的服务:

服务名说明默认端口
smbSMB/CIFS 文件共享445
nfsNFS 文件共享2049
ftpFTP 文件传输21
webdavWebDAV 文件共享80
rsyncRsync 文件同步873

服务名匹配不区分大小写。

tos fileservice status – 查看文件服务状态​

tos fileservice status [service-name] [--json]
  • 无参数:显示全部 5 种文件服务状态
  • 指定服务名:仅显示该服务

输出示例:

SERVICE   ENABLED   STATUS    PORT
smb true running 445
nfs false stopped -
ftp true running 21
webdav false stopped -
rsync false stopped -

tos fileservice enable – 启用文件服务​

tos fileservice enable <service-name>
  • 校验服务名(仅允许 smb/nfs/ftp/webdav/rsync,不区分大小写)
  • 动作:写入配置文件 enable: true,执行 systemctl enable 和 systemctl start
  • 若已启用则输出 File service already enabled 并返回 4(状态冲突)
  • 输出:File service enabled: smb

tos fileservice disable – 禁用文件服务(高风险)​

tos fileservice disable <service-name> [--yes]
  • 高风险操作:可能中断活动文件访问
  • 交互模式显示确认提示,非交互模式必须传 --yes
  • 若已禁用则输出 File service already disabled 并返回 0(幂等)
  • 输出:File service disabled: smb

八、系统服务管理​

父命令:tos service

本地命令,基于 systemd,无需认证。管理底层系统服务(smb/nfs/ftp/sftp/rsync/ssh/telnet/webdav/webdavs)。

tos service list – 列出系统服务​

tos service list [--status <running|stopped>] [--json]

输出示例:

SERVICE NAME   STATUS    AUTOSTART
ftp stopped false
nfs stopped false
smb running false
ssh running true

tos service start – 启动服务​

tos service start <service-name>
  • 幂等:已运行时输出 Service already running: smb 并返回 0
  • 输出:Service started: smb

tos service stop – 停止服务(高风险)​

tos service stop <service-name> [--yes]
  • 高风险操作:可能中断活跃用户
  • 交互模式显示确认提示,非交互模式必须传 --yes
  • 幂等:已停止时输出 Service already stopped: smb 并返回 0
  • 输出:Service stopped: smb

tos service restart – 重启服务​

tos service restart <service-name>
  • 若未运行则等同于 start
  • 输出:Service restarted: smb

tos service set – 设置开机自启动​

tos service set <service-name> --autostart <true|false>
  • 基于 systemd enable/disable
  • 输出:Service autostart set: smb=true

九、存储管理​

注意:所有存储管理命令均为远程命令,需要认证。通过 Unix socket(/var/run/socks/storage.sock)与存储后端通信。

tos storage info – 存储总览​

tos storage info [--scope <disk|volume|raid|all>] [--json]
  • --scope 过滤显示范围,默认 all
  • 健康磁盘统计基于存储池级 Health 枚举

输出示例:

PROPERTY           VALUE
Disk Count 1
Healthy Disks 0
Warning Disks 0
Failed Disks 1
Array Count 1
Volume Count 1
External Devices 0
Hyper Cache disabled

tos disk – 磁盘管理​

父命令:tos disk

子命令说明
list列出磁盘,支持排序和详情
mount挂载磁盘
unmount卸载磁盘(高风险,需 --yes)
# 列出磁盘
tos disk list [--detail] [--sort <size|status|temp>] [--json]

# 挂载磁盘
tos disk mount sda

# 卸载磁盘(高风险)
tos disk unmount sda --yes

list 输出示例:

DISK ID   MODEL                    CAPACITY   HEALTH   TEMP   SYSTEM DISK
HDD1 ST2000VX017-3CV102 2.00 TB normal - No

tos array – 阵列管理​

父命令:tos array

子命令说明
list列出存储阵列,支持排序和详情
mount挂载阵列
delete删除阵列(高风险,不可逆,需 --yes)
# 列出阵列
tos array list [--detail] [--sort <size|status>] [--json]

# 挂载阵列
tos array mount <array-uuid>

# 删除阵列(高风险)
tos array delete <array-uuid> --yes

tos volume – 卷管理​

父命令:tos volume

子命令说明
list列出卷,支持排序和详情
mount挂载卷
delete删除卷(高风险,不可逆,需 --yes)
# 列出卷
tos volume list [--detail] [--sort <size|status>] [--json]

# 挂载卷
tos volume mount <volume-uuid>

# 删除卷(高风险)
tos volume delete <volume-uuid> --yes

tos shared-folder – 共享文件夹管理​

父命令:tos shared-folder

子命令说明
list列出共享文件夹
show查看指定文件夹的详细配置
add创建共享文件夹
delete删除共享文件夹(高风险,不可逆,需 --yes)
# 列出共享文件夹
tos shared-folder list [--detail] [--json]

# 查看文件夹详情
tos shared-folder show <folder-id> [--json]

# 创建共享文件夹(非交互示例)
tos shared-folder add myshare --path /Volume3/myshare --device Volume3 --yes

# 删除共享文件夹(高风险)
tos shared-folder delete myshare --yes

add 命令主要参数:

参数说明
<folder-name>文件夹名称,必填
--path挂载路径,非交互必填
--device存储设备,非交互必填
--desc文件夹描述
--encrypt启用加密
--recycle回收站:0=关闭,1=开启,2=仅管理员访问
--hidden隐藏文件夹
--quota配额:-1=禁用,0=关闭,1=启用
--save-days回收站保留天数(默认 30)
--time-machine启用 Time Machine

十、用户管理​

注意:用户管理命令均为远程命令,需要认证。

tos user – 本地用户管理​

父命令:tos user

子命令说明
list列出所有用户,可按状态过滤
add创建用户
delete删除用户(高风险,不可逆,需 --yes)
online查看当前在线用户
# 列出用户
tos user list [--status active|inactive] [--json]

# 创建用户(非交互,推荐使用 --password-stdin)
echo 'SecurePass123' | tos user add bob --password-stdin --group users --enabled true --yes

# 删除用户(高风险)
tos user delete bob --yes

# 查看在线用户
tos user online [--json]

add 命令参数说明:

参数说明
<username>用户名,必填
--password明文密码(不推荐,会暴露在进程列表中)
--password-stdin从标准输入读取密码(推荐)
--group主用户组,默认 users
--enabled是否启用,默认 true
--yes跳过交互确认

online 输出示例:

USERNAME    IP             LOGIN TIME          SERVICE
admin 192.168.1.10 2026-04-23T09:12:00 TOS Web

tos user-group – 用户组管理​

父命令:tos user-group

子命令说明
list列出所有用户组
add创建用户组
delete删除用户组(高风险,不可逆,需 --yes)
# 列出用户组
tos user-group list [--detail] [--json]

# 创建用户组
tos user-group add developers --description "Development Team"

# 删除用户组(高风险)
tos user-group delete developers --yes

list 输出示例:

GROUP NAME   DESCRIPTION       MEMBER COUNT
admin Administrators 2
users Normal users 8

十一、应用中心管理​

注意:应用管理命令均为远程命令,需要认证。通过 Unix socket(/var/api/Application.sock)与应用中心后端通信。

父命令:tos app

所有子命令支持应用 ID 或显示名(精确匹配,优先 ID)。

子命令说明
list列出所有应用
info显示指定应用的详细信息
install安装应用,可指定安装路径(需 --yes)
uninstall卸载应用(高风险,--clean 删除残留数据,需 --yes)
update更新应用(不指定应用则更新全部,需 --yes)
enable启用应用
disable禁用应用(高风险,可能中断正在使用的服务,需 --yes)
status检查应用状态
# 列出应用
tos app list [--status running|stopped] [--refresh] [--json]

# 查看应用详情
tos app info mysql [--json]

# 安装应用
tos app install DockerEngine --path /Volume1 --yes

# 卸载应用(高风险)
tos app uninstall mysql --yes

# 更新所有应用
tos app update --yes

# 启用/禁用应用
tos app enable mysql
tos app disable mysql --yes

# 查看应用状态
tos app status mysql [--json]

list 输出示例:

APP ID      NAME         VERSION    STATUS      CATEGORY           SIZE
mysql MariaDB 10.3.33 running Utilities 17.9 MB
plex Plex Media 1.42.2 running Multimedia 200.0 MB

status 输出示例:

PROPERTY    VALUE
App ID mysql
Installed Yes
Running Yes
Version 10.3.33

十二、网络管理​

tos network info – 查看网络配置​

父命令:tos network(远程命令,需认证)

显示设备名、HTTP/HTTPS 端口、网卡接口、IP、MAC、MTU、DNS、网关等。

tos network info [--scope <all|ip|dns|gateway>] [--json]
  • --scope 过滤显示范围,默认 all

输出示例:

PROPERTY       VALUE
Device Name TNAS-fe52
HTTP Port 8181
HTTPS Port 5443
Interface eth1
IPv4 10.18.13.150
IPv6 fe80::6ebf:b5ff:fe02:fe52
MAC 6c:bf:b5:02:fe:52
MTU 1500
DNS 10.18.2.10
IPv4 Gateway 10.18.13.1
IPv6 Gateway -
Bond Enabled false

十三、远程访问(tnas.online)​

注意:远程访问命令均为远程命令,需要认证。

父命令:tos tnas-online

子命令说明
info查看远程访问状态
enable启用远程访问
disable禁用远程访问(高风险,可能中断远程连接,需 --yes)

tos tnas-online info – 查看状态​

tos tnas-online info [--detail] [--json]
  • --detail 显示完整连接信息(账号、URL、IP、版本、VPN、运行时长)

输出示例:

PROPERTY    VALUE
Status enabled
TNAS ID ABCD1234
Connected true

tos tnas-online enable – 启用远程访问​

tos tnas-online enable --tnas-id <tnas-id> --account <email> [--password <pw>] [--password-stdin] [--yes]
参数说明
--tnas-idTNAS ID,必填
--account铁威马账号(邮箱格式),必填
--password账号密码(不推荐明文)
--password-stdin从标准输入读取密码(推荐)
--yes跳过交互确认
  • 非交互模式必须提供 --tnas-id、--account 和密码
  • 已启用时返回退出码 4
  • 输出:tnas-online enabled

非交互示例:

echo 'password' | tos tnas-online enable --tnas-id MyNAS-01 --account user@example.com --password-stdin --yes

tos tnas-online disable – 禁用远程访问(高风险)​

tos tnas-online disable [--yes]
  • 交互模式显示确认提示,非交互模式必须传 --yes
  • 已禁用时幂等返回 0
  • 输出:tnas-online disabled

十四、系统日志​

注意:日志管理命令均为远程命令,需要认证。

父命令:tos log

子命令说明
view查看日志,可按事件类别、级别、行数过滤
clear清除日志(高风险,不可逆,需 --yes)
export导出日志为 CSV 文件

tos log view – 查看日志​

tos log view [event] [--level <level>] [--lines <n>] [--json]

事件类别:all / system / connect / file / samba / ftp / storage / transmit(默认:all)

日志级别:all / info / warn / error(默认:all)

显示行数:默认 20 行

输出示例:

TIME                         LEVEL   MODULE   USER   MESSAGE
2026-04-23T10:00:00+08:00 INFO system - System started

tos log clear – 清除日志(高风险)​

tos log clear [event] [--level <level>] [--yes]
  • 高风险操作:不可逆删除日志记录
  • 交互模式显示确认提示,非交互模式必须传 --yes
  • 输出:Logs cleared: system

tos log export – 导出日志​

tos log export [event] [--level <level>] [--output <path>]
  • 导出指定类别和级别的日志为 CSV 文件
  • 默认输出到当前目录,可用 --output 指定路径
  • 输出:文件路径和文件大小

十五、系统更新​

注意:更新命令为远程命令,需要认证。

父命令:tos update

子命令说明
check检查是否有可用更新
install下载并安装更新(高风险,需 --yes)

tos update check – 检查更新​

tos update check [--json]
  • 查询是否有可用系统更新

有更新时输出:

Update available
Current Version 7.0.0447
Target Version 7.0.0559
Package Size 774.2 MB

无更新时输出:System is up to date

tos update install – 安装更新(高风险)​

tos update install [--yes] [--force]
  • 高风险操作:下载并安装系统更新,可能需要重启
  • 完整流程:检查更新 → 下载升级包(显示进度)→ 安装升级(显示步骤)→ 提示重启
  • 交互模式显示确认提示,非交互模式必须传 --yes
  • --force 强制安装,即使检查未通过
  • 安装过程中 SSH 可能断开连接
  • 输出:进度信息 + 最终结果

十六、会话管理​

tos login – 登录并缓存会话​

tos login [-u <username>] [-P <password>] [--token-only]
  • 不带参数:交互式登录(提示输入用户名和密码)
  • --token-only:仅输出 Token 字符串,不保存会话文件
# 交互式登录
tos login

# 非交互式登录
tos login -u admin -P yourpassword

# 生成 Token(适合 CI/CD)
tos login -u admin -P yourpassword --token-only

tos logout – 清除缓存的会话​

tos logout
  • 清除当前 TOS 守护进程的缓存会话
  • 无会话时幂等返回 0
  • 输出:Logged out

交互模式与非交互模式​

CLI 智能判断是否在终端环境运行:

交互模式(终端环境)​

  • 缺少参数时逐项提示输入
  • 高风险操作显示 [y/N] 确认提示
  • 密码输入不回显
  • 按 Ctrl+C 取消操作(退出码 130)
  • 输入 n 或直接回车取消(退出码 99)

非交互模式(脚本/CI/CD)​

  • 必须提供所有必填参数
  • 高风险命令必须使用 --yes 跳过确认
  • 缺少参数或未加 --yes 会直接报错(退出码 1)

JSON 输出格式​

所有支持 --json 的命令输出规范的 JSON 数据,便于程序解析。

格式约定:

  • 字段名使用 snake_case
  • 布尔值为 true/false
  • 时间使用 ISO 8601 格式(如 2026-04-23T09:12:00+08:00)
  • JSON 输出到 stdout,错误信息输出到 stderr

示例:

tos fileservice status --json
[
{"service_name": "smb", "enabled": true, "status": "running", "port": "445"},
{"service_name": "nfs", "enabled": false, "status": "stopped", "port": "-"}
]

退出码说明​

退出码含义典型场景
0成功命令正常完成
1参数错误缺少必填参数、校验失败、未加 --yes
2权限不足认证失败或权限不够
3资源不存在用户/服务/磁盘等不存在
4资源冲突资源已存在或状态冲突
5资源忙任务进行中或设备忙
6网络错误无法连接到守护进程
7超时操作超时
8部分成功批量操作部分成功
9内部错误未知的内部错误
10会话过期缓存会话已过期,需重新登录
99用户取消交互确认时选择 No 或取消
130中断信号用户按 Ctrl+C 终止

使用场景示例​

日常运维​

# 在终端中直接执行
tos info

# 查看磁盘健康
tos disk list

# 查看在线用户
tos user online

脚本批量操作​

# 批量创建用户(从 CSV 导入)
# userlist.csv 格式: username,password,group
while IFS=, read -r u p g; do
echo "$p" | tos user add "$u" --password-stdin --group "$g" --enabled true --yes
done < userlist.csv

# 定时检查磁盘健康并告警
tos disk list --json | jq '.[] | select(.health != "normal")'

CI/CD 场景​

# 生成 Token
TOS_TOKEN=$(tos login -u admin -P $ADMIN_PASS --token-only)
export TOS_TOKEN

# 安装应用
tos app install DockerEngine --path /Volume1 --yes

AI 工具调用​

# AI 工具可通过命令行调用 tos 命令
# 例如:获取系统状态供 AI 分析
tos info --json

# AI 可解析 JSON 输出并作出决策
tos disk list --json

内部开发与系统集成​

# 开发人员可通过 CLI 封装内部运维工具
# 示例:封装磁盘健康检查函数
check_disk_health() {
tos disk list --json | jq '.[] | select(.health != "normal")'
}

# 将 CLI 集成到内部运维平台
# 示例:获取系统状态上报至监控系统
tos info --json | curl -X POST https://monitor.example.com/api/report -d @-

常见问题​

Q:CLI 需要额外安装吗?
不需要。CLI 已预装于 TOS 7 及以上系统,直接执行 tos 命令即可使用。

Q:CLI 必须通过 SSH 使用吗?
不是。CLI 可通过任何命令行终端调用,包括但不限于本地控制台、远程 Shell、自动化脚本、AI 工具等。

Q:CLI 只能在 TNAS 设备上使用吗?
不是。任何运行 TOS 7 及以上版本的系统均可使用 CLI。

Q:为什么有些命令需要认证,有些不需要?
本地命令(如 tos info、tos fileservice)直接读写系统文件或调用 systemd,无需认证;远程命令需要与 TOS 守护进程通信,因此需要认证。

Q:会话缓存文件安全吗?
会话文件(~/.tos/session.json)权限为 0600,且密码使用 RSA 公钥加密存储,不保存明文密码。

Q:如何使用 JSON 输出?
查询类命令添加 --json 标志即可,如 tos disk list --json。

Q:非交互模式下如何确认高风险操作?
所有高风险命令必须添加 --yes 参数,否则命令将报错退出。

更多帮助​

每个命令都支持 --help 查看详细用法:

tos --help
tos user add --help
tos app install --help