从CLI访问EMS
从CLI访问EMS
EMS CLI(emscli)是 FortiClient EMS 的命令行管理工具,可用于查看系统信息、检查服务状态、读取日志,以及执行备份、诊断和升级等运维操作。
注意
- CLI 中的重启、配置、备份恢复和升级命令可能影响业务。首次登录时建议先使用帮助和查询命令;执行变更前应确认目标、记录原值并准备回退方案。
确认部署类型
EMS 在不同部署类型下提供的登录入口和命令格式不同。从EMS 7.4.3开始,EMS提供了emscli作为EMS的管理工具,并在后期迭代版本中完善了很多emscli的命令。 需要注意的是, 在EMS 7.4.4之后,EMS VM不再提供shell解释器,只允许通过emscli工具来管理EMS。
| 部署类型 | 登录后的环境 | 命令写法 |
|---|---|---|
| Linux 安装版(non-virtual appliance) | Linux Shell | 使用 sudo emscli <命令>,或先运行 sudo emscli 进入交互模式,或在root权限下使用emscli <命令> |
| EMS 虚拟设备(virtual appliance) | EMS CLI | SSH 登录后直接输入 <命令>,不添加 sudo emscli |
注
Linux 操作系统账户、EMS 虚拟设备账户和 EMS Web 管理员账户是不同的身份体系,用户名和密码不一定相同。
连接CLI
Linux安装版
通过 SSH 或服务器控制台进入 EMS 所在的 Linux Shell,然后确认命令可用:
command -v emscli
sudo emscli --help正常情况下,emscli 位于 /usr/bin/emscli,并指向安装目录中的可执行文件。如果命令不在 PATH 中,可尝试完整路径:
sudo /opt/forticlientems/bin/emscli --help注意
- 官方建议以
sudo调用emscli。部分会改变主机或 EMS 状态的命令在未使用sudo时可能无法正常执行,强烈不建议通过修改二进制文件权限来绕过授权,会导致配置文件错误。
进入交互模式
sudo emscli看到 $> 提示符后,输入命令时不再添加 emscli:
$> system get info
$> service get --all
$> exit不进入交互模式
也可以在 Linux Shell 中执行单次命令,命令结束后自动返回 Shell:
sudo emscli system get info
sudo emscli service get --allEMS VM设备
虚拟设备默认可通过 TCP 22 端口接受 SSH 连接。使用部署时配置的设备账户登录:
ssh ems@<EMS_IP>登录后即进入 EMS CLI,直接输入命令:
$> system get info
$> service get --all
$> exit这里的 $> 是提示符,不属于命令。exit 会结束 CLI;在虚拟设备的 SSH 会话中,它也会断开当前连接。
使用内置帮助
emscli的命令按层级组织。先查看当前层级支持的命令,再逐级查看参数:
$> help
$> system --help
$> system get info --help
$> service --help
$> service get --help
$> service log --help
$> execute --helphelp、-h 和 --help 的可用位置以当前命令层级为准。不同补丁版本和部署类型的命令集合可能不同,设备上的帮助信息应作为最终依据。
Linux Shell 的单次命令模式需要在上述命令前加 sudo emscli,例如:
sudo emscli service get --help常用查询命令
以下示例采用 EMS CLI 交互模式的写法。Linux Shell 中执行时,在每条命令前加 sudo emscli。
查看系统信息
$> system get info该命令用于查看 EMS 版本、操作系统、CPU、内存、磁盘、IP 地址和主机名等信息。也可以只查询某一项:
$> system get info ems
$> system get info cpu
$> system get info ram
$> system get info disk
$> system get info ip参考结果:
fortinet@EMS $> system get info
EMS Version: 7.4.8.2245 Mature
FIPS Enabled: no
OS Version: Ubuntu 22.04.5 LTS
Hostname: EMS74
Linux Kernel: 6.8.0-1067-azure
RAM: 7.7GiB (27.25% used)
CPU: 2 Cores
Disk(s):
\-> / (/dev/root) 124G (23% used)
\-> /dev/shm (tmpfs) 3.9G (1% used)
\-> /run (tmpfs) 1.6G (1% used)
\-> /run/lock (tmpfs) 5.0M (0% used)
\-> /sys/firmware/efi/efivars (efivarfs) 128K (33% used)
\-> /boot/efi (/dev/sda15) 105M (6% used)
\-> /mnt (/dev/sdb1) 16G (1% used)
\-> /run/user/1000 (tmpfs) 789M (1% used)
IP(s):
\-> enP48567s1: UP (no IP assigned)
\-> lo: 127.0.0.1/8
\-> eth0: 10.9.0.4/24
Air-gapped: no
Proxy: Not defined
fortinet@EMS $>查看服务状态
查看全部 EMS 服务:
$> service get --all查看一个或多个指定服务:
$> service get --name fcems_notify
$> service get --name fcems_notify,fcems_monitor多个服务名使用英文逗号分隔,逗号后不要添加空格。显示服务说明:
$> service get --all --describe输出通常包括服务名称、PID、运行状态、CPU 和内存占用以及启动时间。active 或 running 只说明进程状态,不能单独证明 Web 控制台、终端连接或所有业务功能均正常。
参考结果:
fortinet@EMS $> service get --name fcems_notify
[fcems_notify] -> [PID: 3395477][active] [running] [CPU: 0.0%, RAM: 0.3%] -> Sun 2026-10-25 07:46:13 UTC; 17h ago
fortinet@EMS $>
fortinet@EMS $> service get --all
[fcems_ztna] -> [PID: 3393304][active] [running] [CPU: 0.1%, RAM: 0.6%] -> Sun 2026-10-25 07:45:46 UTC; 17h ago
[redis-server] -> [PID: 3391954][active] [running] [CPU: 0.8%, RAM: 0.3%] -> Sun 2026-10-25 07:45:28 UTC; 17h ago
[fcems_ecsocksrv] -> [PID: 3398762][active] [running] [CPU: 0.2%, RAM: 0.8%] -> Sun 2026-10-25 07:51:55 UTC; 17h ago
[fcems_reg] -> [PID: 3391899][active] [running] [CPU: 0.3%, RAM: 0.6%] -> Sun 2026-10-25 07:45:25 UTC; 17h ago
[fcems_das] -> [PID: 3391934][active] [running] [CPU: 10.0%, RAM: 1.8%] -> Sun 2026-10-25 07:45:27 UTC; 17h ago
[fcems_notify] -> [PID: 3395477][active] [running] [CPU: 0.0%, RAM: 0.3%] -> Sun 2026-10-25 07:46:13 UTC; 17h ago
[fcems_monitor] -> [PID: 3393302][active] [running] [CPU: 4.6%, RAM: 0.7%] -> Sun 2026-10-25 07:45:46 UTC; 17h ago
[fcems_wspgbouncer] -> [PID: 3391943][active] [running] [CPU: 0.0%, RAM: 0.1%] -> Sun 2026-10-25 07:45:27 UTC; 17h ago
[apache2] -> [PID: 3399713][active] [running] [CPU: 0.0%, RAM: 0.1%] -> Sun 2026-10-25 07:52:54 UTC; 17h ago
[fcems_ka] -> [PID: 3392002][active] [running] [CPU: 0.3%, RAM: 0.7%] -> Sun 2026-10-25 07:45:29 UTC; 17h ago
[fcems_probe] -> [PID: 3391915][active] [running] [CPU: 0.0%, RAM: 0.6%] -> Sun 2026-10-25 07:45:26 UTC; 17h ago
[postgresql@18-main] -> [PID: 3393030][active] [running] [CPU: 0.0%, RAM: 1.8%] -> Sun 2026-10-25 07:45:33 UTC; 17h ago
[fcems_pgbouncer] -> [PID: 3391913][active] [running] [CPU: 1.9%, RAM: 0.1%] -> Sun 2026-10-25 07:45:26 UTC; 17h ago
[fcems_tag] -> [PID: 3391946][active] [running] [CPU: 0.3%, RAM: 0.6%] -> Sun 2026-10-25 07:45:27 UTC; 17h ago
[fcems_chromebook] -> [PID: 3399271][active] [running] [CPU: 0.0%, RAM: 0.5%] -> Sun 2026-10-25 07:51:55 UTC; 17h ago
[fcems_dbop] -> [PID: 3393367][active] [running] [CPU: 0.0%, RAM: 0.5%] -> Sun 2026-10-25 07:45:47 UTC; 17h ago
[fcems_mdmproxy] -> [PID: 3393356][active] [running] [CPU: 0.0%, RAM: 0.3%] -> Sun 2026-10-25 07:45:47 UTC; 17h ago
[fcems_task] -> [PID: 3393318][active] [running] [CPU: 0.8%, RAM: 0.8%] -> Sun 2026-10-25 07:45:46 UTC; 17h ago
[fcems_addaemon] -> [PID: 3393320][active] [running] [CPU: 0.1%, RAM: 0.6%] -> Sun 2026-10-25 07:45:46 UTC; 17h ago
[fcems_installer] -> [PID: 3396349][active] [running] [CPU: 0.3%, RAM: 0.6%] -> Sun 2026-10-25 07:46:25 UTC; 17h ago
[fcems_adevtsrv] -> [PID: 3395260][active] [running] [CPU: 0.0%, RAM: 0.6%] -> Sun 2026-10-25 07:46:13 UTC; 17h ago
[fcems_update] -> [PID: 3393354][active] [running] [CPU: 0.3%, RAM: 0.9%] -> Sun 2026-10-25 07:45:46 UTC; 17h ago
[fcems_forensics] -> [PID: 3393322][active] [running] [CPU: 0.1%, RAM: 0.6%] -> Sun 2026-10-25 07:45:46 UTC; 17h ago
[fcems_sip] -> [PID: 3393392][active] [running] [CPU: 0.2%, RAM: 3.7%] -> Sun 2026-10-25 07:45:47 UTC; 17h ago
[fcems_adconnector] -> [PID: 3393360][active] [running] [CPU: 0.0%, RAM: 0.4%] -> Sun 2026-10-25 07:45:47 UTC; 17h ago
[fcems_upload] -> [PID: 3393395][active] [running] [CPU: 0.1%, RAM: 0.6%] -> Sun 2026-10-25 07:45:47 UTC; 17h ago
[fcems_deploy] -> [PID: 3393330][active] [running] [CPU: 0.1%, RAM: 0.6%] -> Sun 2026-10-25 07:45:46 UTC; 17h ago
[fcems_scep] -> [PID: 3393324][active] [running] [CPU: 0.0%, RAM: 0.2%] -> Sun 2026-10-25 07:45:46 UTC; 17h ago
[fcems_ftntdbimporter]-> [PID: 3393416][active] [running] [CPU: 0.0%, RAM: 0.5%] -> Sun 2026-10-25 07:45:48 UTC; 17h ago
[fcems_adtask] -> [PID: 3393421][active] [running] [CPU: 0.0%, RAM: 0.6%] -> Sun 2026-10-25 07:45:48 UTC; 17h ago
fortinet@EMS $>查看服务日志
$> service log --name fcems_notify
$> service log --name fcems_notify --follow
$> service log --name fcems_notify --filter ERROR三条命令依次用于查看最新日志、持续显示新增日志和筛选包含 ERROR 的日志行。如需忽略大小写或使用扩展正则表达式,可先查看帮助,再使用 --ignore-case 或 --regex。持续查看日志时按 Ctrl+C 返回提示符。
筛选不到 ERROR 不代表系统没有故障,还应结合问题发生时间和完整上下文判断。
参考结果:
fortinet@EMS $> service log --name fcems_notify --follow
==> /var/log/forticlientems/notifyworker_2026-10-26.log <==
2026-10-26T01:20:14.122Z INFO FOS_Server/cert.go:126 Using cert = /opt/forticlientems/data/certs/ems74.fortiems.com.cn.pem, key = /opt/forticlientems/data/certs/ems74.fortiems.com.cn.key, ForticareCertUsed = false
2026-10-26T01:21:14.122Z INFO FOS_Server/cert.go:158 Caching cert = /opt/forticlientems/data/certs/ems74.fortiems.com.cn.pem, key = /opt/forticlientems/data/certs/ems74.fortiems.com.cn.key, ForticareCertUsed = false
2026-10-26T01:21:14.122Z INFO FOS_Server/cert.go:126 Using cert = /opt/forticlientems/data/certs/ems74.fortiems.com.cn.pem, key = /opt/forticlientems/data/certs/ems74.fortiems.com.cn.key, ForticareCertUsed = false
2026-10-26T01:21:14.122Z INFO FOS_Server/EMSserver.go:344 current connections:
[114.92.197.146:38307 : FWF61E4Q16002186 : Current Uptime - 17h34m44.622745383s]
2026-10-26T01:21:14.122Z INFO FOS_Server/EMSserver.go:345 currently 1 connections
2026-10-26T01:22:14.122Z INFO FOS_Server/cert.go:158 Caching cert = /opt/forticlientems/data/certs/ems74.fortiems.com.cn.pem, key = /opt/forticlientems/data/certs/ems74.fortiems.com.cn.key, ForticareCertUsed = false
2026-10-26T01:22:14.122Z INFO FOS_Server/cert.go:126 Using cert = /opt/forticlientems/data/certs/ems74.fortiems.com.cn.pem, key = /opt/forticlientems/data/certs/ems74.fortiems.com.cn.key, ForticareCertUsed = false
2026-10-26T01:23:14.121Z INFO FOS_Server/cert.go:158 Caching cert = /opt/forticlientems/data/certs/ems74.fortiems.com.cn.pem, key = /opt/forticlientems/data/certs/ems74.fortiems.com.cn.key, ForticareCertUsed = false
2026-10-26T01:23:14.122Z INFO FOS_Server/cert.go:126 Using cert = /opt/forticlientems/data/certs/ems74.fortiems.com.cn.pem, key = /opt/forticlientems/data/certs/ems74.fortiems.com.cn.key, ForticareCertUsed = false
fortinet@EMS $>
fortinet@EMS $>
fortinet@EMS $> ervice log --name fcems_notify --filter ERROR
fortinet@EMS $>查看HA状态
部署了 EMS HA 时,可以查询集群状态和节点:
$> ha get status
$> ha get nodes未部署 HA 的单机环境执行命令后显示单机信息:
fortinet@EMS $> ha get status
HA: disabled
ysheng@EMS74 $> ha get nodes
EMS Node(s):
Name | Preferred DCs | Role | Status | Last Seen
--------------------------------------------------+---------------------------------+---------+---------+----------------------------
EMS (*) | | primary | online | 2026-10-26 01:25:29.553687
DB Node(s):
Host | Port | Role | Status | Latency (ms)
--------------------------------------------------+---------+---------+------------
fortinet@EMS $>运维命令的使用边界
service 命令还支持启动、停止、重启和调试操作。执行前先查看目标子命令帮助:
$> service restart --help
$> service enable-debug --help
$> service disable-debug --help仅操作已确认的目标服务。启用调试后应及时复现问题、收集日志并关闭调试,避免日志持续增长。不要因单个服务状态异常而直接重启所有服务。
虚拟设备还通过 execute 命令提供主机级运维能力,例如连通性测试、备份、诊断、重启和升级:
$> execute ping <目标IP或域名>
$> execute backup --help
$> execute diagnostic --help
$> execute reboot --help
$> execute upgrade --help备份和还原流程参见 EMS的备份。Web 控制台日志与组件日志的区别参见 EMS日志设置和查看。
常见问题
下面记录可能发生的问题。
| 现象 | 检查与处理 |
|---|---|
emscli: command not found | 确认当前是否处于 Linux Shell;执行 command -v emscli,必要时使用完整路径 |
Permission denied 或命令执行不完整 | Linux 安装版使用 sudo emscli,并确认当前账户具备 sudo 权限 |
SSH 登录后不能执行 sudo、ls 或 systemctl | 当前很可能是虚拟设备的受限 EMS CLI;改用 system、service 和 execute 命令 |
unknown command 或 unknown flag | 确认是否错误添加或遗漏了 emscli 前缀,并逐级运行 --help |
| 查询单个服务时报参数错误 | 使用 service get --name <服务名>,不要把服务名直接当作无标志参数 |
| 服务显示运行,但 Web 或终端仍异常 | 检查对应服务日志、网络路径、端口和证书;不要只依据进程状态判断 |
| 修改后无法确认是否生效 | 重新运行相应的 get 命令,并从 Web 控制台或终端侧验证实际业务 |
更新历史
| Ver | Description | Author | Rev | Date |
|---|---|---|---|---|
| 1.0 | First Complete | ysheng | tanga | 2026.10.14 |
| 0.1 | Draft Version | - | - | 2026.08.04 |