如何使用 Mosquitto MQTT 获取客户端 IP
How to get client IP using Mosquitto MQTT
我想使用 Mosquitto MQTT 记录客户端的 IP 地址。我在服务器端使用 Paho - Python,在客户端使用 Arduino - PubSubClient。
在PHP中,很简单,我就用$_SERVER['REMOTE_ADDR']
。 Mosquitto 有类似的东西吗?
如果启用了日志记录,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).
这显示了一个从本地主机连接的新客户端,包括客户端 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.
我只是将IP设置为客户端ID。不过要小心。如果有人已经占用了此客户端 ID,您将断开连接,原因代码为 1。
或者,您可以使用用户数据字段。
我想使用 Mosquitto MQTT 记录客户端的 IP 地址。我在服务器端使用 Paho - Python,在客户端使用 Arduino - PubSubClient。
在PHP中,很简单,我就用$_SERVER['REMOTE_ADDR']
。 Mosquitto 有类似的东西吗?
如果启用了日志记录,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).
这显示了一个从本地主机连接的新客户端,包括客户端 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.
我只是将IP设置为客户端ID。不过要小心。如果有人已经占用了此客户端 ID,您将断开连接,原因代码为 1。
或者,您可以使用用户数据字段。