restyled bars changed logics in generate docker info added sorting to services changed temp scanner (maybe would be optimized)
65 lines
1.9 KiB
Bash
Executable File
65 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
export LANG='en_US.UTF-8'
|
|
# set column width
|
|
COLUMNS=1
|
|
# colors
|
|
green="\e[1;32m"
|
|
red="\e[1;31m"
|
|
yellow="\e[1;33m"
|
|
undim="\e[0m"
|
|
|
|
docker_format='docker ps --format "{{.Names}} {{.Status}}" -a'
|
|
game_label='eval "$docker_format" --filter "label=game_server"'
|
|
traker='eval "$docker_format" --filter "label=traker"'
|
|
combined='(eval "$docker_format" --filter "label=traker" && eval "$docker_format" --filter "label=game_server") | sort'
|
|
|
|
mapfile -t containers < <( comm -2 -3 <( eval "$docker_format" | sort) <( eval "$combined") | sed '/^\s*$/d' | tail -n +1)
|
|
mapfile -t game_servers < <( eval "$game_label" | sort | sed '/^\s*$/d'| tail -n +1)
|
|
mapfile -t trakers < <( eval "$traker" | sort | sed '/^\s*$/d'| tail -n +1)
|
|
|
|
check_status() {
|
|
IFS=" " read name status <<< $1
|
|
replica=$( echo ${name} | sed 's/\([^.]*\)\.\([^.]*\)\.\([^.]*\)/\2/')
|
|
name=$( echo ${name} | sed 's/\([^.]*\)\.\([^.]*\)\.\([^.]*\)/\1/')
|
|
|
|
if [[ "${status}" == *"healthy"* ]]; then
|
|
_status="${green}healthy${undim}"
|
|
|
|
elif [[ "${status}" == *"Restarting"* ]]; then
|
|
_status="${yellow}restarting${undim}"
|
|
|
|
elif [[ "${status}" == *"Paused"* ]]; then
|
|
_status="${yellow}paused${undim}"
|
|
|
|
elif [[ "${status}" == *"Up"* ]]; then
|
|
_status="${green}up${undim}"
|
|
|
|
elif [[ "${status}" == *"Created"* ]]; then
|
|
_status="${yellow}created${undim}"
|
|
|
|
elif [[ "${status}" == *"Exited"* ]]; then
|
|
_status="${red}exited${undim}"
|
|
|
|
fi
|
|
|
|
_line=${name},${_status}
|
|
echo -e "${name} ${_status}" | awk '{printf(" %-20s %+20s\n", $1, $2); }'
|
|
}
|
|
|
|
printf "\nDocker status:\n Game Servers:\n"
|
|
for i in "${!game_servers[@]}"; do
|
|
check_status "${game_servers[$i]}"
|
|
done
|
|
|
|
printf "\n Tracker:\n"
|
|
for i in "${!trakers[@]}"; do
|
|
check_status "${trakers[$i]}"
|
|
done
|
|
|
|
printf "\n Other:\n"
|
|
for i in "${!containers[@]}"; do
|
|
check_status "${containers[$i]}"
|
|
done
|
|
printf ""
|