rename ass
This commit is contained in:
61
app/sbin/getContainers
Executable file
61
app/sbin/getContainers
Executable file
@@ -0,0 +1,61 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Collect running container IDs
|
||||
container_ids=$(docker ps -q)
|
||||
|
||||
# Start JSON array
|
||||
echo "["
|
||||
|
||||
first=true
|
||||
|
||||
for cid in $container_ids; do
|
||||
# Get basic info
|
||||
name=$(docker inspect --format '{{.Name}}' "$cid" | sed 's/^\/\(.*\)/\1/')
|
||||
image=$(docker inspect --format '{{.Config.Image}}' "$cid")
|
||||
container_id=$(docker inspect --format '{{.Id}}' "$cid")
|
||||
|
||||
# RAM usage in bytes (from docker stats)
|
||||
mem_usage=$(docker stats --no-stream --format "{{.MemUsage}}" "$cid")
|
||||
# mem_usage looks like "12.34MiB / 1.944GiB" — extract the used part
|
||||
mem_used=$(echo "$mem_usage" | awk '{print $1}')
|
||||
|
||||
# Convert mem_used to MiB as a number
|
||||
# Support KiB, MiB, GiB units
|
||||
ram_usage=$(echo "$mem_used" | awk '
|
||||
{
|
||||
val = substr($0, 1, length($0)-3)
|
||||
unit = substr($0, length($0)-2, 3)
|
||||
if (unit == "KiB") print val / 1024
|
||||
else if (unit == "MiB") print val
|
||||
else if (unit == "GiB") print val * 1024
|
||||
else print 0
|
||||
}')
|
||||
|
||||
# Traefik labels (extract labels JSON)
|
||||
labels=$(docker inspect --format '{{json .Config.Labels}}' "$cid" | jq -r 'to_entries | map(select(.key | test("^traefik.*"))) | map({(.key): .value}) | add')
|
||||
|
||||
# Comma between JSON objects
|
||||
if [ "$first" = false ]; then
|
||||
echo ","
|
||||
fi
|
||||
first=false
|
||||
|
||||
# Output JSON object
|
||||
jq -n \
|
||||
--arg name "$name" \
|
||||
--arg id "$container_id" \
|
||||
--arg image "$image" \
|
||||
--argjson ram "$ram_usage" \
|
||||
--argjson tags "$labels" \
|
||||
'{
|
||||
name: $name,
|
||||
id: $id,
|
||||
image: $image,
|
||||
ram_mb: $ram,
|
||||
traefik_tags: $tags
|
||||
}'
|
||||
done
|
||||
|
||||
# End JSON array
|
||||
echo "]"
|
||||
|
||||
Reference in New Issue
Block a user