计算或列出与 mosquitto 服务器的活动客户端连接

物联网 蚊子
2021-05-30 08:43:43

我只想知道有多少客户端主动连接到我的 mosquitto 服务器。或者更好的是,获取连接到我的 mosquitto 服务器的客户端 ID 列表。我阅读了一些建议该主题$SYS/broker/clients/connected将提供此信息的文档但是这个命令没有任何反应,也没有结果:

mosquitto_sub -h myserver.myserver.myserver -p 9500 -t $SYS/broker/clients/connected -u "my-user" -P "my-password" --capath /etc/ssl/certs/

(我取代myserver.myserver.myservermy-usermy-password实际值。)我验证连接是否正常工作,因为如果我发布一条消息同一主题的消息出现。

如何获取与我的 mosquitto 服务器有活动连接的客户端列表?或者至少是活动连接的数字计数?

2个回答

呸我想通了。我需要在主题周围加上单引号,这样它就$SYS不会被解释为变量。所以像这样:

mosquitto_sub -h myserver.myserver.myserver -p 9500 -t '$SYS/broker/clients/connected' -u "my-user" -P "my-password" --capath /etc/ssl/certs/

这似乎有效:

netstat -ntp | grep ESTABLISHED.*mosquitto

在我的情况下输出:

tcp        0      0 10.42.0.2:1883          10.42.0.18:56553        ESTABLISHED 448/mosquitto       
tcp        0      0 10.42.0.2:1883          10.42.0.19:54037        ESTABLISHED 448/mosquitto       
tcp        0      0 10.42.0.2:1883          10.42.0.11:49321        ESTABLISHED 448/mosquitto       
tcp        0      0 10.42.0.2:1883          10.42.0.15:48685        ESTABLISHED 448/mosquitto       
tcp        0      0 10.42.0.2:1883          10.42.0.12:57691        ESTABLISHED 448/mosquitto       
tcp        0      0 10.42.0.2:1883          10.42.0.13:56037        ESTABLISHED 448/mosquitto       
tcp        0      0 10.42.0.2:1883          10.42.0.17:40679        ESTABLISHED 448/mosquitto       
tcp        0      0 10.42.0.2:1883          10.42.0.16:39627        ESTABLISHED 448/mosquitto       
tcp        0      0 10.42.0.2:1883          10.42.0.14:33079        ESTABLISHED 448/mosquitto       

如果只关心总数:

netstat -natp | grep ESTABLISHED.*mosquitto | wc -l

印刷

9

netstat参数:-n避免获取 IP 地址的主机名(更快),-t使用 TCP 而不是 UDP 并-p显示程序名称,以便我们可以使用 grep 进行过滤。