40-clients/ucepsa/edge-oee-demo/tools/mqtt_auth_probe.py
2026-06-25 18:51:33 +02:00

93 lines
2.1 KiB
Python
Executable File

#!/usr/bin/env python3
import os
import time
from pathlib import Path
import paho.mqtt.client as mqtt
def read_env(path=".env"):
env = {}
p = Path(path)
if not p.exists():
return env
for raw in p.read_text().splitlines():
line = raw.strip()
if not line or line.startswith("#") or "=" not in line:
continue
k, v = line.split("=", 1)
env[k.strip()] = v.strip().strip('"').strip("'")
return env
env = read_env()
host = os.getenv("MQTT_HOST_OVERRIDE") or env.get("MQTT_HOST", "127.0.0.1")
port = int(os.getenv("MQTT_PORT_OVERRIDE") or env.get("MQTT_PORT", "1883"))
user = (
os.getenv("MQTT_USER_OVERRIDE")
or os.getenv("MQTT_USERNAME_OVERRIDE")
or os.getenv("MQTT_USER")
or os.getenv("MQTT_USERNAME")
or env.get("MQTT_USER")
or env.get("MQTT_USERNAME")
or env.get("MOSQUITTO_USER")
or env.get("MOSQUITTO_USERNAME")
)
password = (
os.getenv("MQTT_PASSWORD_OVERRIDE")
or os.getenv("MQTT_PASS_OVERRIDE")
or os.getenv("MQTT_PASSWORD")
or os.getenv("MQTT_PASS")
or env.get("MQTT_PASSWORD")
or env.get("MQTT_PASS")
or env.get("MOSQUITTO_PASSWORD")
or env.get("MOSQUITTO_PASS")
)
print("host =", host)
print("port =", port)
print("user_present =", bool(user))
print("password_present =", bool(password))
result = {
"connect_rc": None,
"disconnect_rc": None,
}
def on_connect(client, userdata, flags, rc, properties=None):
result["connect_rc"] = rc
print("on_connect rc =", rc)
def on_disconnect(client, userdata, rc, properties=None):
result["disconnect_rc"] = rc
print("on_disconnect rc =", rc)
client = mqtt.Client(client_id="mqtt_auth_probe")
if user:
client.username_pw_set(user, password)
client.on_connect = on_connect
client.on_disconnect = on_disconnect
client.connect(host, port, 60)
client.loop_start()
deadline = time.time() + 5
while time.time() < deadline and result["connect_rc"] is None:
time.sleep(0.1)
client.loop_stop()
client.disconnect()
if result["connect_rc"] != 0:
raise SystemExit(f"MQTT auth fallida. connect_rc={result['connect_rc']}")
print("OK: MQTT conectado correctamente")