OTOBO 11.0.18 常用 CLI 命令与工具详解
OTOBO 11.0.18 常用 CLI 命令与工具详解
OTOBO 11.0.18 常用 CLI 命令与工具详解
目标:系统梳理 OTOBO 11.0.18 服务端命令行工具(核心是
bin/otobo.Console.pl管理控制台),按「元命令 / Admin 域 / Maint 域 / Dev 域」给出每条常用命令的用法与实测回显,覆盖账号、队列、工单、会话、日志、缓存、数据库、邮件、包管理九大运维场景。全部命令与输出均在 Docker Compose 部署的 OTOBO 11.0.18 实测采集(2026-10-24),逐行照抄。
一、环境信息
- OTOBO 版本:11.0.18(Docker 镜像
rotheross/otobo:rel-11_0_18),部署见 《OTOBO 11.0.18 Docker Compose 部署指南》 - 执行位置:所有命令在 OTOBO 应用目录(
/opt/otobo)下执行;Docker 形态通过docker compose exec web bash进入后执行,下文命令统一省略该进入步骤 - 控制台规模:
bin/otobo.Console.pl List实测共 155 行输出,命令分布在Admin、Dev、Maint、Znuny4OTOBO四个域 - 实测账号:
root@localhost;示例队列Support、示例工单 TN2026102438000013
二、工具概览
OTOBO 服务器端 CLI 工具清单(位于 /opt/otobo/bin/,实测目录列表):
bin/
├── otobo.Console.pl # 管理控制台(本篇主角,155 条子命令)
├── otobo.Daemon.pl # 后台守护进程管理(start/stop/status)
├── otobo.CheckModules.pl # Perl 依赖体检
├── otobo.CheckSum.pl # 文件校验和核对
├── otobo.SetPermissions.pl # 文件属主与权限设置
├── backup.pl # 全量备份(数据库+应用+配置)
└── restore.pl # 备份恢复
职责分工:otobo.Console.pl 是日常运维 95% 的入口(账号/队列/工单/缓存/日志/包);otobo.Daemon.pl 只管守护进程生命周期;backup.pl/restore.pl 独立于控制台负责备份恢复;otobo.CheckModules.pl 在升级或报缺模块时使用。
otobo.Console.pl 全局选项(实测 --help 回显节选):
Usage:
otobo.Console.pl command [options] [arguments]
Options:
[--help|h] - Display help for this command.
[--no-ansi] - Do not perform ANSI terminal output coloring.
[--quiet] - Suppress informative output, only retain error messages.
三、前置条件
- 系统已完成安装(
SecureMode=1),否则部分 Maint 命令行为受限(Daemon 无法常驻等,排障实录见部署指南第十一章 Q4)。 - 执行者需进入应用容器/服务器 shell 且对
/opt/otobo有读写权限(Docker 形态容器内默认以otobo用户运行,权限已就绪)。 - 命令输出使用 ANSI 着色,采集到文件或脚本消费时建议加
--quiet或--no-ansi。
四、各工具详解
4.1 元命令:List / Search / Help
List——列出全部可用命令(实测 155 行,节选首尾):
bin/otobo.Console.pl List
实测回显(节选):
OTOBO 11 (11.0.18)
Usage:
otobo.Console.pl command [options] [arguments]
Available commands:
Help - Display help for an existing command or search for commands.
List - List available commands.
Search - Search for commands.
Admin
Admin::FixTranslationImportColumn - Rename column import of table translation_item to import_param if neccessary.
...
Maint
Maint::Cache::Delete - Delete cache files created by OTOBO.
Maint::Ticket::Dump - Print a ticket and its articles to the console.
...
Znuny4OTOBO
Znuny4OTOBO::DefaultColumnsScreen::Add - Updates the 'DynamicField' config of all DefaultColumnsScreens configs accordingly
Search——按关键词模糊搜命令,实测:
bin/otobo.Console.pl Search session
实测回显:
Searching for commands similar to 'session'...
Maint
Maint::Session::DeleteAll - Delete all sessions.
Maint::Session::DeleteExpired - Delete expired sessions.
Maint::Session::ListAll - List all sessions.
Maint::Session::ListExpired - List expired sessions.
Help——查看某命令的完整用法,实测:
bin/otobo.Console.pl Help Admin::Queue::Add
实测回显(节选):
Create a new queue.
Usage:
otobo.Console.pl Admin::Queue::Add --name ... --group ... [--system-address-id ...] [--system-address-name ...] [--comment ...] [--unlock-timeout ...] [--first-response-time ...] [--update-time ...] [--solution-time ...] [--calendar ...]
Options:
--name ... - Queue name for the new queue.
--group ... - Group which should be assigned to the new queue.
⚠️ 注意:不存在
ListCommands命令(实测报Error: Could not find Kernel::System::Console::Command::ListCommands.),枚举命令一律用List。
4.2 Admin 域:管理对象操作
Admin::User::SetPassword——修改客服账号密码(实测,见部署指南 4.4):
bin/otobo.Console.pl Admin::User::SetPassword admin q1w2e3r4
实测回显:
Successfully set password for user 'admin'.
⚠️ 内置超级管理员的登录名是
root@localhost(不是root),误用报Error: No user found with login 'root'!。
Admin::Queue::Add——创建队列(实测):
bin/otobo.Console.pl Admin::Queue::Add --name Support --group users --comment "一级支持队列"
实测回显:
Adding a new queue...
Done.
Admin::Queue::List——列出队列(实测):
bin/otobo.Console.pl Admin::Queue::List
实测回显:
Listing Queues...
Postmaster
Raw
Junk
Misc
Support
Done.
前四个为系统内置队列(Raw 是默认收件队列),Support 为 4.2 上一条命令实测创建。
Admin::Package::List——列出已安装扩展包(实测):
bin/otobo.Console.pl Admin::Package::List
实测回显:
Listing all installed packages...
There are no packages installed.
Admin::Package::RepositoryList——查看在线包仓库(实测节选):
bin/otobo.Console.pl Admin::Package::RepositoryList
实测回显(节选):
| Install: https://ftp.otobo.org/pub/otobo/packages-thirdparty/:Freicon-KanbanBoard-11.0.5.opm
+----------------------------------------------------------------------------+
Done.
Admin::WebService::List——列出集成 Web 服务(实测):
bin/otobo.Console.pl Admin::WebService::List
实测回显:
Listing all web services...
Elasticsearch (1)
Done.
Elasticsearch (1) 为部署时 --activate-elasticsearch 自动创建的内置 Web 服务;自建 REST/SOAP 集成也落在这一域(Admin::WebService::Add/Dump/Update/Delete)。
4.3 Maint 域:运维与数据维护
数据库连通性检查(实测):
bin/otobo.Console.pl Maint::Database::Check
实测回显:
Check OTOBO database connectivity.
Succeeded.
会话管理(实测):
bin/otobo.Console.pl Maint::Session::ListAll
实测回显:
Listing all sessions...
gG2QUITvlpbpO2MkFiuE9xKO1Pgmhdap
xeHHnoqRWE6kdu9VYuptIbieoquJ4HDJ
Done.
配套命令:Maint::Session::DeleteAll(登出全部在线客服)、Maint::Session::DeleteExpired(清过期会话)。
守护进程状态摘要(实测节选):
bin/otobo.Console.pl Maint::Daemon::Summary
实测回显(节选):
Gathering summary for all daemons...
System configuration sync:
Daemon is active.
Tasks to be executed in future:
There are currently no tasks to be executed in future.
Recurrent cron tasks:
+---------------------------------+---------------------+-------------+---------------+---------------------+
| Name | Last Execution | Last Status | Last Duration | Next Execution |
缓存清理(实测):
bin/otobo.Console.pl Maint::Cache::Delete
实测回显:
Deleting cache...
Done.
日志查看与清理(实测):
bin/otobo.Console.pl Maint::Log::Print
实测回显(节选,恰为上一节建单操作的日志行):
Sat Oct 24 05:26:53 2026;;info;;OTOBO-otobo.Console.pl-Maint::PostMaster::Read-38;;New Ticket [2026102438000013/Demo ticket via] created (TicketID=2,Queue=Raw,Priority=3 normal,State=new)
日志行格式为 时间;;级别;;来源;;消息 四段式。清空日志:bin/otobo.Console.pl Maint::Log::Clear。
邮件入单:Maint::PostMaster::Read——从 stdin 读邮件原文创建工单(邮件管道对接的标准入口),实测:
printf "From: customer@example.com\nTo: otobo@example.com\nSubject: Demo ticket via PostMaster\n\nThis is a test ticket body created via Maint::PostMaster::Read.\n" | bin/otobo.Console.pl Maint::PostMaster::Read
实测回显:无输出(静默成功),但系统已建单——日志(上一条 Maint::Log::Print)与工单导出均可证实。
工单导出:Maint::Ticket::Dump(实测):
bin/otobo.Console.pl Maint::Ticket::Dump 2
实测回显(完整):
=====================================================================
TicketNumber: 2026102438000013
TicketID: 2
Title: Demo ticket via PostMaster
Created: 2026-10-24 05:26:53
Queue: Raw
State: new
Priority: 3 normal
Lock: unlock
CustomerID: customer@example.com
CustomerUserID: customer@example.com
---------------------------------------------------------------------
ArticleID: 2
CreateTime: 2026-10-24 05:26:53
SenderType: customer
Channel: Email
From: customer@example.com
To: otobo@example.com
Sender: customer@example.com
Subject: Demo ticket via PostMaster
---------------------------------------------------------------------
This is a test ticket body created via Maint::PostMaster::Read.
上半段是工单属性、下半段是文章(邮件正文)全文;--format JSON 可输出机器可读格式,--article-limit 限制文章数。
⚠️ 注意:
ticket-id是位置参数,写--ticket-id 2会报错(实测回显Error: please provide a valid value for argument 'ticket-id'.),与--setting-name类选项型参数不同。
全文索引状态(实测):
bin/otobo.Console.pl Maint::Ticket::FulltextIndex --status
实测回显:
Indexed Articles: 100.0% (1/1)
💡 说明:该百分比统计的是启用 Elasticsearch 前的「数据库后备索引」覆盖度;ES 侧的连接与迁移验证用下一条命令。
Elasticsearch 连接测试(实测):
bin/otobo.Console.pl Maint::Elasticsearch::TestConnection
实测回显:
Connection could be established!
配置读取与导出:Maint::Config::Dump <参数名> / Maint::Config::DumpAll(实测用法与参数字典见 《OTOBO 11.0.18 配置参数详解》第三章)。
4.4 Dev 域:开发与测试辅助
实测清单中 Dev 域可用命令(节选自 List 输出):
| 命令 | 用途 |
|---|---|
Dev::UnitTest::Run | 跑系统自带单元测试(TAP 输出) |
Dev::Tools::Shell | 交互式 Perl REPL,直接调 OTOBO API |
Dev::Tools::Database::RandomDataInsert | 灌随机测试数据(压测/演示前造数) |
Dev::Package::Build | 把 sopm 源打包成 .opm 安装包 |
Dev::Code::CPANAudit | 扫描 CPAN 依赖已知漏洞 |
Dev::Tools::Migrate::OTRSToOTOBO | OTRS 6.0.x 配置迁移辅助 |
生产服务器一般不使用 Dev 域命令,此处仅作能力索引。
4.5 配套工具:otobo.Daemon.pl 与 backup.pl
otobo.Daemon.pl——守护进程生命周期(实测):
bin/otobo.Daemon.pl status
实测回显:
Manage the OTOBO Daemon process.
Daemon not running
(安装完成前 SecureMode=0 时 daemon 自行退出即为此状态;正常运行时该命令回显 Daemon running。)启停:bin/otobo.Daemon.pl start / stop。容器形态下 daemon 由编排独立服务承载,宿主侧运维只需盯 docker compose ps 的 healthy 状态。
backup.pl——全量备份(--help 实测节选):
bin/backup.pl --help
实测回显(节选):
Backup script for OTOBO.
Usage: backup.pl -d /data_backup_dir [-c/--compress (gzip|bzip2)] [--max-hours <hours>|--max-days <days>]
标准用法:bin/backup.pl -d /opt/otobo_backup -c gzip,产出数据库 SQL dump + 应用目录 tar 包;恢复用 bin/restore.pl --backupdir <目录> --restart。
五、注意事项
- 参数形态两类:
Maint::Config::Dump、Maint::Ticket::Dump用位置参数;Admin::Config::Update、Admin::Queue::Add用--key value选项。拿不准先Help <命令>(实测入口见 4.1)。 - 写操作即时生效:
Admin::Queue::Add、Admin::User::SetPassword等直接落库,无 dry-run;对配置的修改可用Admin::Config::UnlockAll/Admin::Config::FixInvalid批量善后。 - 缓存一致性:改配置/改库后如界面行为未更新,先
Maint::Cache::Delete(实测回显见 4.3)。 - 容器形态的执行入口:本篇命令统一在
docker compose exec web bash进入后执行;docker compose exec daemon bash内也能执行同一套命令(共享卷/opt/otobo),但建议固定用 web 执行,避免并行写冲突。 - 审计留痕:
Maint::Log::Print会记录所有通过控制台触发的关键事件(如建单、改配置),重要操作前后各打一次日志便于回溯。
六、常见问题
Q1:命令敲下去报 Could not find Kernel::System::Console::Command::xxx.
命令名拼错或该域无此命令。先用 bin/otobo.Console.pl Search <关键词> 确认真实命令名(实测案例:Admin::User::List 不存在、ListCommands 不存在,正确入口分别是 Search user 与 List)。
Q2:命令卡住或报 Redis/DB 连接错误?
控制台命令依赖应用配置中的 db、redis 服务连通。实测排障案例:web 服务网络挂接丢失时 Admin::User::SetPassword 连环报 Redis error: Could not connect to Redis server at redis:6379 与 Unknown server host 'db' (-3),全栈重建后恢复(处置细节见部署指南第十一章 Q3)。
Q3:Maint::Ticket::Dump 报 please provide a valid value for argument 'ticket-id'?
该命令的 ticket-id 是位置参数(Maint::Ticket::Dump 2),不支持 --ticket-id 选项形态(实测两种写法对比见 4.3)。
Q4:想在 shell 脚本里消费命令输出?
加 --quiet 只保留错误输出,加 --no-ansi 去掉颜色码;取配置值用 Maint::Config::Dump(单值 JSON 形态,实测见配置篇 3.1),避免解析 List 的表格输出。