#!/bin/sh # ═══════════════════════════════════════════════════════════ # Clouka — Bootstrap d'adoption # Compte : Clouka Default # Généré : 2026-05-27 19:16:45 # ═══════════════════════════════════════════════════════════ CLOUKA_URL="https://prep.clouka.com" PLATFORM_TOKEN="pltk_Wgo0FkRhvbZZh0e3DQZzj8RapIQn6it7" TOKEN_FILE="/etc/clouka/device.token" CONFIG_FILE="/etc/clouka/config" # ─── Détection du device ─────────────────────────────────── SERIAL=$(mnf_info -s 2>/dev/null || cat /sys/class/net/eth0/address | tr -d ':' | tr 'a-z' 'A-Z' | head -c 16) FIRMWARE=$(cat /etc/version 2>/dev/null || echo "unknown") MODEL=$(mnf_info -n 2>/dev/null || cat /tmp/sysinfo/model 2>/dev/null || echo "unknown") MAC=$(cat /sys/class/net/eth0/address 2>/dev/null || echo "") # ─── Enregistrement (si pas encore fait) ────────────────── if [ ! -f "$TOKEN_FILE" ]; then echo "▶ Enregistrement de $SERIAL sur Clouka..." RESPONSE=$(curl -sf -X POST "$CLOUKA_URL/api/v1/device/install" \ -H "Content-Type: application/json" \ -d "{ \"platform_token\": \"$PLATFORM_TOKEN\", \"serial\": \"$SERIAL\", \"firmware\": \"$FIRMWARE\", \"model\": \"$MODEL\", \"mac\": \"$MAC\" }" 2>/dev/null) if [ -z "$RESPONSE" ]; then echo "✗ Impossible de contacter $CLOUKA_URL" exit 1 fi DEVICE_TOKEN=$(echo "$RESPONSE" | grep -o '"device_token":"[^"]*"' | cut -d'"' -f4) MQTT_HOST=$(echo "$RESPONSE" | grep -o '"mqtt_host":"[^"]*"' | cut -d'"' -f4) MQTT_PORT=$(echo "$RESPONSE" | grep -o '"mqtt_port":[0-9]*' | cut -d':' -f2) if [ -z "$DEVICE_TOKEN" ]; then echo "✗ Enregistrement refusé : $RESPONSE" exit 1 fi mkdir -p /etc/clouka echo "$DEVICE_TOKEN" > "$TOKEN_FILE" printf "MQTT_HOST=%s\nMQTT_PORT=%s\nSERIAL=%s\nCLOUKA_URL=%s\n" "$MQTT_HOST" "$MQTT_PORT" "$SERIAL" "$CLOUKA_URL" > "$CONFIG_FILE" chmod 600 "$TOKEN_FILE" "$CONFIG_FILE" echo "✓ Device enregistré : $SERIAL" echo " → token = $DEVICE_TOKEN" echo " → mqtt = $MQTT_HOST:$MQTT_PORT" else echo "▶ Device déjà enregistré, mise à jour de l'agent..." fi # ─── Nettoyage de l'ancien agent ───────────────────────── /etc/init.d/clouka-agent stop 2>/dev/null /etc/init.d/clouka-agent disable 2>/dev/null # Tuer les process ash/sh qui exécutent clouka-agent.sh for _f in /proc/*/cmdline; do _pid=$(echo "$_f" | tr -cd '0-9') [ -z "$_pid" ] && continue _cmd=$(cat "$_f" 2>/dev/null | tr '\0' ' ') echo "$_cmd" | grep -q 'clouka-agent' && kill -9 "$_pid" 2>/dev/null done sleep 1 # ─── Téléchargement et installation de l'agent ──────────── echo "▶ Téléchargement de l'agent depuis $CLOUKA_URL..." curl -sf "$CLOUKA_URL/devices/$SERIAL/script" -o /usr/bin/clouka-agent.sh 2>/dev/null if [ $? -ne 0 ]; then echo "✗ Impossible de télécharger l'agent" exit 1 fi chmod +x /usr/bin/clouka-agent.sh /usr/bin/clouka-agent.sh install echo "✓ Agent Clouka installé et démarré"