Removed experimental -z flag and old version check code

This commit is contained in:
Thaurin 2025-02-21 17:57:09 +01:00
parent 3aeee837f9
commit b2d67c9f52

View file

@ -34,7 +34,6 @@ Help() {
echo "-s Include stopped containers in the check. (Logic: docker ps -a)." echo "-s Include stopped containers in the check. (Logic: docker ps -a)."
echo "-t Set a timeout (in seconds) per container for registry checkups, 10 is default." echo "-t Set a timeout (in seconds) per container for registry checkups, 10 is default."
echo "-v Prints current version." echo "-v Prints current version."
echo "-z [Experimental] Check images asynchrously for increased performance."
echo echo
echo "Project source: $Github" echo "Project source: $Github"
} }
@ -49,7 +48,7 @@ c_reset="\033[0m"
Timeout=10 Timeout=10
Stopped="" Stopped=""
while getopts "aynpfrhlisvmzc:e:d:t:" options; do while getopts "aynpfrhlisvmc:e:d:t:" options; do
case "${options}" in case "${options}" in
a|y) AutoUp="yes" ;; a|y) AutoUp="yes" ;;
c) CollectorTextFileDirectory="${OPTARG}" c) CollectorTextFileDirectory="${OPTARG}"
@ -65,7 +64,6 @@ while getopts "aynpfrhlisvmzc:e:d:t:" options; do
s) Stopped="-a" ;; s) Stopped="-a" ;;
t) Timeout="${OPTARG}" ;; t) Timeout="${OPTARG}" ;;
v) printf "%s\n" "$VERSION" ; exit 0 ;; v) printf "%s\n" "$VERSION" ; exit 0 ;;
z) ParallelCheck=1 ;;
d) DaysOld=${OPTARG} d) DaysOld=${OPTARG}
if ! [[ $DaysOld =~ ^[0-9]+$ ]] ; then { printf "Days -d argument given (%s) is not a number.\n" "${DaysOld}" ; exit 2 ; } ; fi ;; if ! [[ $DaysOld =~ ^[0-9]+$ ]] ; then { printf "Days -d argument given (%s) is not a number.\n" "${DaysOld}" ; exit 2 ; } ; fi ;;
h|*) Help ; exit 2 ;; h|*) Help ; exit 2 ;;
@ -284,90 +282,63 @@ if [[ $t_out ]]; then
else t_out="" else t_out=""
fi fi
if [[ $ParallelCheck -ne 1 ]]; then check_image() {
# Check the image-hash of every running container VS the registry i="$1"
for i in $(docker ps $Stopped --filter "name=$SearchName" --format '{{.Names}}') ; do local Excludes=($Excludes_string)
((RegCheckQue+=1)) local skip
progress_bar "$RegCheckQue" "$ContCount" for e in "${Excludes[@]}" ; do [[ "$i" == "$e" ]] && skip=1 ; done
# Looping every item over the list of excluded names and skipping
for e in "${Excludes[@]}" ; do [[ "$i" == "$e" ]] && continue 2 ; done if [[ $skip -eq 1 ]]; then
ImageId=$(docker inspect "$i" --format='{{.Image}}') echo Skip $i
RepoUrl=$(docker inspect "$i" --format='{{.Config.Image}}') return
LocalHash=$(docker image inspect "$ImageId" --format '{{.RepoDigests}}') fi
# Checking for errors while setting the variable
if RegHash=$(${t_out} $regbin -v error image digest --list "$RepoUrl" 2>&1) ; then local NoUpdates GotUpdates GotErrors
if [[ "$LocalHash" = *"$RegHash"* ]] ; then ImageId=$(docker inspect "$i" --format='{{.Image}}')
NoUpdates+=("$i") RepoUrl=$(docker inspect "$i" --format='{{.Config.Image}}')
else LocalHash=$(docker image inspect "$ImageId" --format '{{.RepoDigests}}')
if [[ -n "$DaysOld" ]] && ! datecheck ; then
NoUpdates+=("+$i ${ImageAge}d") # Checking for errors while setting the variable
else if RegHash=$(${t_out} $regbin -v error image digest --list "$RepoUrl" 2>&1) ; then
GotUpdates+=("$i") if [[ "$LocalHash" = *"$RegHash"* ]] ; then
fi echo NoUpdates "$i"
fi
else else
# Here the RegHash is the result of an error code if [[ -n "$DaysOld" ]] && ! datecheck ; then
GotErrors+=("$i - ${RegHash}") echo NoUpdates "+$i ${ImageAge}d"
fi
done
else
check_image() {
i="$1"
local Excludes=($Excludes_string)
local skip
for e in "${Excludes[@]}" ; do [[ "$i" == "$e" ]] && skip=1 ; done
if [[ $skip -eq 1 ]]; then
echo Skip $i
return
fi
local NoUpdates GotUpdates GotErrors
ImageId=$(docker inspect "$i" --format='{{.Image}}')
RepoUrl=$(docker inspect "$i" --format='{{.Config.Image}}')
LocalHash=$(docker image inspect "$ImageId" --format '{{.RepoDigests}}')
# Checking for errors while setting the variable
if RegHash=$(${t_out} $regbin -v error image digest --list "$RepoUrl" 2>&1) ; then
if [[ "$LocalHash" = *"$RegHash"* ]] ; then
echo NoUpdates "$i"
else else
if [[ -n "$DaysOld" ]] && ! datecheck ; then echo GotUpdates "$i"
echo NoUpdates "+$i ${ImageAge}d"
else
echo GotUpdates "$i"
fi
fi fi
else
# Here the RegHash is the result of an error code
echo GotErrors "$i - ${RegHash}"
fi fi
} else
# Here the RegHash is the result of an error code
echo GotErrors "$i - ${RegHash}"
fi
}
export -f check_image datecheck # Make required functions and variables available to subprocesses
export Excludes_string="${Excludes[@]}" # Can only export scalar variables export -f check_image datecheck
export t_out regbin RepoUrl DaysOld export Excludes_string="${Excludes[@]}" # Can only export scalar variables
export t_out regbin RepoUrl DaysOld
# Asynchronously check the image-hash of every running container VS the registry # Asynchronously check the image-hash of every running container VS the registry
while read -r line; do while read -r line; do
((RegCheckQue+=1)) ((RegCheckQue+=1))
progress_bar "$RegCheckQue" "$ContCount" progress_bar "$RegCheckQue" "$ContCount"
Got=${line%% *} # Extracts the first word (NoUpdates, GotUpdates, GotErrors) Got=${line%% *} # Extracts the first word (NoUpdates, GotUpdates, GotErrors)
item=${line#* } item=${line#* }
case "$Got" in case "$Got" in
NoUpdates) NoUpdates+=("$item") ;; NoUpdates) NoUpdates+=("$item") ;;
GotUpdates) GotUpdates+=("$item") ;; GotUpdates) GotUpdates+=("$item") ;;
GotErrors) GotErrors+=("$item") ;; GotErrors) GotErrors+=("$item") ;;
Skip) ;; Skip) ;;
*) echo "Error! Unexpected output from subprocess: ${line}" ;; *) echo "Error! Unexpected output from subprocess: ${line}" ;;
esac esac
done < <( \ done < <( \
docker ps $Stopped --filter "name=$SearchName" --format '{{.Names}}' | \ docker ps $Stopped --filter "name=$SearchName" --format '{{.Names}}' | \
xargs -P 32 -I {} bash -c 'check_image "{}"' \ xargs -P 32 -I {} bash -c 'check_image "{}"' \
) )
fi
# Sort arrays alphabetically # Sort arrays alphabetically
IFS=$'\n' IFS=$'\n'