我想使用Mosquitto MQTT记录客户端的IP地址。我在服务器端使用Paho - Python,在客户端使用Arduino - PubSubClient。
在PHP中,它非常简单,我只使用$_SERVER['REMOTE_ADDR']
。 Mosquitto有类似的东西吗?
答案 0 :(得分:4)
如果启用了日志记录,则Mosquitto会在新客户端连接时进行记录:
Oct 13 15:09:32 bagend mosquitto[1361]: 1476367772: New connection from 127.0.0.1 on port 1883.
Oct 13 15:09:32 bagend mosquitto[1361]: 1476367772: New client connected from 127.0.0.1 as mosqsub/18943-bagend (c1, k60).
这显示了一个从localhost连接的新客户端,其中包含客户端ID mosqsub/18943-bagend
没有办法从另一个MQTT客户端获取它,因为每个客户端都不知道连接到代理的任何其他客户端。
编辑:mosquitto.conf手册页暗示您可以使用配置文件中的以下内容登录MQTT主题:
log_dest topic
这会记录到$SYS/broker/log/<log level>
因此,在订阅mosquitto_sub -v -t '$SYS/broker/log/#'
$SYS/broker/log/N 1476378785: New connection from 127.0.0.1 on port 1885.
$SYS/broker/log/N 1476378785: New client connected from 127.0.0.1 as mosqpub/4654-tiefighter (c1, k60).
$SYS/broker/log/N 1476378785: Client mosqpub/4654-tiefighter disconnected.
答案 1 :(得分:0)
我只是将IP设置为客户端ID。不过要小心。如果有人已经使用了此客户ID,您将与原因码1断开连接。
或者,您可以使用用户数据字段。