Your IP : 3.15.12.133
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
## check-rpmdb-integrity
## Created by Ihor Bilyi
## Namecheap
## This NRPE check "RPM Database Integrity" check the integrity of the RPM database packages file on shared hosting servers.
## Nagios Status
## 0 = OK (RPM database OK)
## 2 = CRITICAL (RPM database is corrupted)
## 3 = UNKNOWN (Max attempts reached)
##input option
PROGNAME=${0##*/}
print_usage() {
echo ""
echo "Usage: $PROGNAME --help"
}
print_help() {
print_usage
echo ""
echo "This check controls the integrity of the RPM database packages file on shared hosting servers (see TOP-1102)"
echo ""
echo "--help Print this help screen"
echo ""
exit 3
}
rpmdbcheck () {
timeout -s 9 10m repoquery --quiet --installed -a > /dev/null
resrc=$?
}
while [ $# -gt 0 ]; do
case "$1" in
--help)
print_help
;;
-h)
print_help
;;
*)
echo >&2 "Unknown argument: $1"
print_usage
exit 3
;;
esac
shift
done
# Initialize attempt counter
attempt=0
max_attempts=10
dnf_lockfile='/var/cache/dnf/metadata_lock.pid'
while (( attempt < max_attempts )); do
if [ -f $dnf_lockfile ]; then
dnf_pid=$(grep -E -m 1 '^[0-9]*$' $dnf_lockfile)
if [ -n "$dnf_pid" ]; then
if kill -0 "$dnf_pid" 2>/dev/null; then
echo "Detected dnf lock file with PID $dnf_pid"
sleep 10
((attempt++))
else
rpmdbcheck
break
fi
else
rpmdbcheck
break
fi
else
rpmdbcheck
break
fi
done
if (( attempt >= max_attempts )); then
echo "UNKNOWN (Max attempts reached)"
exit 3
fi
if [[ $resrc -eq 0 ]] ; then
echo "OK (RPM database OK)"
exit 0
else
echo "CRITICAL (RPM database is corrupted)"
exit 2
fi