@scrounger
Ich habe mal eine kurze Frage.
Ich habe folgenden (etwas längeren) Befehl unter "Eigene Befehle" hinzugefügt:
docker ps -q | while read id; do \
name=$(docker inspect --format '{{.Name}}' "$id"); name="${name#/}"; \
state=$(docker inspect --format '{{json .State}}' "$id"); \
started=$(echo "$state" | jq -r '.StartedAt'); \
status=$(echo "$state" | jq -r '.Status'); \
health=$(echo "$state" | jq -r '.Health.Status // "none"'); \
finished=$(echo "$state" | jq -r '.FinishedAt'); \
started_timestamp=$(date -d "$started" +%s 2>/dev/null || echo "N/A"); \
finished_timestamp=$(date -d "$finished" +%s 2>/dev/null || echo "N/A"); \
stats=$(docker stats --no-stream --format '{{.CPUPerc}} {{.MemPerc}}' "$id"); \
cpu=$(echo "$stats" | awk '{print $1}'); \
mem_perc=$(echo "$stats" | awk '{print $2}'); \
echo "{\"name\":\"$name\",\"cpu\":\"$cpu\",\"memory\":\"$mem_perc\",\"status\":\"$status\",\"health\":\"$health\",\"started_at\":\"$started_timestamp\",\"last_updated\":\"$finished_timestamp\"}"; \
done | jq -s 'sort_by(.name)'
Leider bleibt der DP mit dem Ergebnis leer.
Wenn ich über "command" in den Objekten gehe klappt es.
Woran kann das liegen?
Edit
Im Log kommt, wenn ich den Host manuell aktualisiere
[userCommandExecute] Docker (192.168.99.83:22, id: Json_Docker, description: 😞 response error: bash: -c: Zeile 2: Syntaxfehler: Unerwartetes Dateiende., stack: ResponseError: [userCommandExecute] Docker (192.168.99.83:22, id: Json_Docker, description: 😞 bash: -c: Zeile 2: Syntaxfehler: Unerwartetes Dateiende. at LinuxControl.sendCommand (/opt/iobroker/node_modules/iobroker.linux-control/main.js:886:26) at processTicksAndRejections (node:internal/process/task_queues:95:5) at LinuxControl.userCommandExecute (/opt/iobroker/node_modules/iobroker.linux-control/main.js:249:21)
Edit
Hab es jetzt.
Befehl noch was angepasst
docker ps -q | while read id; do name=$(docker inspect --format '{{.Name}}' "$id"); name="${name#/}"; state=$(docker inspect --format '{{json .State}}' "$id"); started=$(echo "$state" | jq -r '.StartedAt'); status=$(echo "$state" | jq -r '.Status'); health=$(echo "$state" | jq -r '.Health.Status // "none"'); finished=$(echo "$state" | jq -r '.FinishedAt'); started_timestamp=$(date -d "$started" +%s 2>/dev/null || echo "N/A"); finished_timestamp=$(date -d "$finished" +%s 2>/dev/null || echo "N/A"); stats=$(docker stats --no-stream --format '{{.CPUPerc}} {{.MemPerc}}' "$id"); cpu=$(echo "$stats" | awk '{print $1}'); mem_perc=$(echo "$stats" | awk '{print $2}'); echo "{\"name\":\"$name\",\"cpu\":\"$cpu\",\"memory\":\"$mem_perc\",\"status\":\"$status\",\"health\":\"$health\",\"started_at\":\"$started_timestamp\",\"last_updated\":\"$finished_timestamp\"}"; done | jq -s 'sort_by(.name)'