如何使用Mosquitto MQTT获取客户端IP

时间:2016-10-13 14:03:42

标签: mqtt mosquitto paho

我想使用Mosquitto MQTT记录客户端的IP地址。我在服务器端使用Paho - Python,在客户端使用Arduino - PubSubClient。

在PHP中,它非常简单,我只使用$_SERVER['REMOTE_ADDR']。 Mosquitto有类似的东西吗?

2 个答案:

答案 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断开连接。

或者,您可以使用用户数据字段。