Mosquitto用户强制断开重连测试命令及在线用户IP查询需求
Mosquitto 用户连接管理操作指南
1. 强制断开指定用户的命令
使用Mosquitto官方工具mosquitto_ctrl结合动态安全模块执行断开操作,命令格式如下:
# 本地Broker(通过套接字连接) mosquitto_ctrl -S dynsec disconnect <username> # 远程Broker(指定IP和控制端口) mosquitto_ctrl -h <broker_ip> -p <control_port> dynsec disconnect <username>
注意:需确保Broker已启用动态安全模块(在mosquitto.conf中配置plugin /usr/lib/mosquitto_dynamic_security.so,路径根据系统调整),并允许控制端口或本地套接字访问。
2. 允许用户重新连接的操作
默认情况下,用户被强制断开后可直接重新连接。若之前通过配置限制了用户连接权限,需按以下方式恢复:
动态安全模式
如果曾通过命令禁止用户连接,执行以下命令恢复权限:
mosquitto_ctrl -S dynsec setClient <username> --allow true
静态ACL/配置模式
- 打开
mosquitto.conf或对应的ACL文件,移除针对该用户的deny规则 - 重载Broker配置(无需重启):
kill -HUP $(pidof mosquitto)
3. 查看当前连接用户的IP地址
有两种常用方式:
方式一:通过Broker日志查看
在mosquitto.conf中启用连接日志:
log_type connection
重启Broker后,日志文件(或控制台输出)会显示类似条目:
New connection from 192.168.1.105 on port 1883. Client test_client authenticated as test_user.
直接从日志中提取用户名对应的IP地址。
方式二:订阅系统主题获取
使用mosquitto_sub订阅Broker的系统主题,实时获取连接信息:
mosquitto_sub -t "$SYS/broker/connection/#" -v
输出示例:
$SYS/broker/connection/test_client/ip 192.168.1.105
$SYS/broker/connection/test_client/username test_user
内容的提问来源于stack exchange,提问作者benjamin Hardy
相关产品推荐
相关产品推荐

