some change into an actual framework

This commit is contained in:
Jonas Maier 2025-12-03 23:25:03 +01:00
parent cee69984d5
commit 6b163b995e
Signed by: jonas
SSH Key Fingerprint: SHA256:yRTjlpb3jSdw2EnZLAWyB4AghBPI8tu42eFXiICyb1U
6 changed files with 92 additions and 44 deletions

34
driver.sh Executable file
View File

@ -0,0 +1,34 @@
#! /bin/sh
cd "$(dirname "$0")" || exit 1
ok() {
echo "[OK] $3"
}
warn() {
echo "[WARN] $3"
}
run_module() {
set -eu
. "$1"
echo "$name"
if [ "$available" -ne 1 ]; then
echo "- not available"
return
fi
check
}
ls modules | while IFS= read -r module; do
[ -f "modules/$module" ] || continue
( run_module "modules/$module" )
if [ "$?" -ne 0 ]; then
echo "Error running module: $module"
echo
fi
echo
done

44
fs.sh
View File

@ -1,44 +0,0 @@
#!/bin/sh
THRESHOLD=90
echo "Checking disk usage (>= $THRESHOLD%)"
df -P | while IFS= read -r line; do
case "$line" in
Filesystem*|"") continue ;;
esac
fs=$(printf '%s\n' "$line" | awk '{print $1}')
usep=$(printf '%s\n' "$line" | awk '{print $5}' | tr -d '%')
mountp=$(printf '%s\n' "$line" | awk '{print $6}')
# skip empty or loop devices
case "$fs" in
""|/dev/loop*) continue ;;
esac
if [ "$usep" -ge "$THRESHOLD" ] 2>/dev/null; then
printf 'WARNING: %s is %s%% full (mounted on %s)\n' "$fs" "$usep" "$mountp"
fi
done
echo
echo "Checking inode usage (>= $THRESHOLD%)"
df -P -i | while IFS= read -r line; do
case "$line" in
Filesystem*|"") continue ;;
esac
fs=$(printf '%s\n' "$line" | awk '{print $1}')
usep=$(printf '%s\n' "$line" | awk '{print $5}' | tr -d '%')
mountp=$(printf '%s\n' "$line" | awk '{print $6}')
# skip empty or loop devices
case "$fs" in
""|/dev/loop*) continue ;;
esac
if [ "$usep" -ge "$THRESHOLD" ] 2>/dev/null; then
printf 'WARNING: %s has %s%% inode usage (mounted on %s)\n' "$fs" "$usep" "$mountp"
fi
done

26
modules/fs-capacity.sh Normal file
View File

@ -0,0 +1,26 @@
#!/bin/sh
THRESHOLD=90
name='Filesystem Usage'
available=1
recommend=1
check() {
df -P | while IFS= read -r line; do
case "$line" in
Filesystem*|"") continue ;;
/dev/loop*) continue ;;
esac
fs=$(printf '%s\n' "$line" | awk '{print $1}')
usep=$(printf '%s\n' "$line" | awk '{print $5}' | tr -d '%')
mountp=$(printf '%s\n' "$line" | awk '{print $6}')
if [ "$usep" -ge "$THRESHOLD" ] 2>/dev/null; then
warn "$mountp" "$usep" "$fs mounted at $mountp is $usep% full"
else
ok "$mountp" "$usep" "$fs mounted at $mountp is $usep% full"
fi
done
}

32
modules/fs-inode.sh Normal file
View File

@ -0,0 +1,32 @@
#!/bin/sh
THRESHOLD=90
name='Filesystem Inode Usage'
available=1
recommend=1
check() {
df -i -P | while IFS= read -r line; do
case "$line" in
Filesystem*|"") continue ;;
/dev/loop*) continue ;;
esac
fs=$(printf '%s\n' "$line" | awk '{print $1}')
use_count=$(printf '%s\n' "$line" | awk '{print $3}')
usep=$(printf '%s\n' "$line" | awk '{print $5}' | tr -d '%')
mountp=$(printf '%s\n' "$line" | awk '{print $6}')
if [ "$use_count" -eq 0 ] 2>/dev/null; then
# likely a file system with no inodes, skip it
continue
fi
if [ "$usep" -ge "$THRESHOLD" ] 2>/dev/null; then
warn "$mountp" "$usep" "$fs mounted at $mountp has $usep% inode usage"
else
ok "$mountp" "$usep" "$fs mounted at $mountp has $usep% inode usage"
fi
done
}