Opensips 3.3中opensips-cli -x失效及查询注册用户问题求助
Opensips 3.3升级后问题解决方案
一、查询注册用户与转储列表的命令
Opensips 3.x中opensipsctl已被opensips-cli替代,查询注册用户(用户位置库)和转储列表需通过MI(管理接口)命令实现,具体用法如下:
查询当前在线注册用户:
直接执行MI命令ul_show,基础格式:opensips-cli -x mi ul_show如需格式化输出(如yaml/json),添加输出类型参数:
opensips-cli -o output_type=yaml -x mi ul_show转储全部注册用户详细列表:
使用MI命令ul_dump,基础格式:opensips-cli -x mi ul_dump同样支持指定输出格式:
opensips-cli -o output_type=json -x mi ul_dump可选交互模式操作:
输入opensips-cli进入交互环境后,直接执行MI命令:opensips-cli> mi ul_show
二、解决opensips-cli -x权限拒绝的问题
Linux内核4.19+的FIFO文件保护机制会限制非创建者用户访问FIFO,导致权限拒绝,可通过以下方案解决:
方案1:调整FIFO文件权限与属主
- 查看当前FIFO文件的权限和属主:
ls -l /tmp/opensips_fifo - 修改文件权限,赋予运行
opensips-cli的用户读写权限:chmod 660 /tmp/opensips_fifo - 调整文件属主为Opensips进程用户与当前用户所属组(假设Opensips运行用户为
opensips):chown opensips:opensips /tmp/opensips_fifo
方案2:修改Opensips配置中的mi_fifo参数
在opensips.cfg中找到mi_fifo模块的加载配置,添加perm参数设置FIFO权限:
loadmodule "mi_fifo.so" modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo") modparam("mi_fifo", "perm", 0660) # 赋予属主和组用户读写权限
修改后重启Opensips服务,新的FIFO文件会自动应用权限设置。
方案3:改用Unix Socket或TCP接口替代FIFO
FIFO的权限限制问题可通过切换至其他MI接口规避:
Unix Socket方案:
在opensips.cfg中加载mi_unixsocket模块并配置:loadmodule "mi_unixsocket.so" modparam("mi_unixsocket", "socket_name", "/tmp/opensips_mi.sock") modparam("mi_unixsocket", "perm", 0660)修改
opensips-cli配置文件(通常为/etc/opensips/opensips-cli.cfg),设置MI传输方式:mi_transport = unix mi_socket = /tmp/opensips_mi.sockTCP接口方案:
在opensips.cfg中加载mi_tcp模块并配置:loadmodule "mi_tcp.so" modparam("mi_tcp", "listen_addr", "127.0.0.1:8888")修改
opensips-cli.cfg:mi_transport = tcp mi_host = 127.0.0.1 mi_port = 8888配置完成后重启Opensips,即可使用新接口执行MI命令。
内容的提问来源于stack exchange,提问作者HP371
相关产品推荐
相关产品推荐

