Skip to content

Commit 813bd12

Browse files
committed
1 parent 9e2893a commit 813bd12

1 file changed

Lines changed: 7 additions & 14 deletions

File tree

  • mkp/local/share/check_mk/agents/plugins

mkp/local/share/check_mk/agents/plugins/yum

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -60,18 +60,21 @@ if command -v dnf5 >/dev/null 2>&1; then
6060
HISTORY_CMD="dnf5 history list"
6161
LIST_CMD="dnf5 list --upgrades"
6262
SECURITY_SUPPORTED=1 # dnf5 supports security updates via check-upgrade --security
63+
YUM_CURRENT="$(ls -lR /var/cache/libdnf5/ 2>/dev/null)"
6364
# Check for regular dnf (Fedora 22+ up to 40, CentOS 8+)
6465
elif command -v dnf >/dev/null 2>&1; then
6566
PKG_MGR="dnf"
6667
HISTORY_CMD="dnf history list"
6768
LIST_CMD="dnf list updates"
6869
SECURITY_SUPPORTED=1
70+
YUM_CURRENT="$(ls -lR /var/cache/dnf/ 2>/dev/null)"
6971
# Fall back to yum (CentOS/RHEL 6-7)
7072
elif command -v yum >/dev/null 2>&1; then
7173
PKG_MGR="yum"
7274
HISTORY_CMD="yum history list"
7375
LIST_CMD="yum list updates"
7476
SECURITY_SUPPORTED=1
77+
YUM_CURRENT="$(ls -lR /var/cache/yum/ 2>/dev/null)"
7578
else
7679
echo "ERROR: No supported package manager found (yum, dnf, or dnf5)"
7780
exit 2
@@ -140,25 +143,14 @@ echo "<<<yum>>>"
140143
# Update cached data if YUM fingerprint has changed OR machine has recently rebooted.
141144
if [ "$YUM_CURRENT" != "$YUM_CACHED" ] || [ ! -s "$CACHE_RESULT_CHECK" ]
142145
then
143-
count=0
144-
# Check for running package manager processes
145-
while [ -n "$(pgrep -f "(python|/usr/bin/).*/(yum|dnf)" | head -1)" ]; do
146-
if [ $count -eq 3 ]; then
147-
echo "ERROR: Tried to run $PKG_MGR for 30 secs but another package manager instance was running"
148-
exit 2
149-
else
150-
((count++))
151-
sleep 10
152-
fi
153-
done
154-
155146
# Check if reboot required for new kernel
156147
KERNEL_PACKAGE=$(rpm -qf --qf "%{NAME}" /boot/config-$(uname -r))
157148
if [ -z "$KERNEL_PACKAGE" ]; then
158149
BOOT_REQUIRED="no"
159150
else
160151
RUNNING_KERNEL=$(rpm -qf --qf "%{VERSION}-%{RELEASE}\n" /boot/config-$(uname -r))
161-
LATEST_KERNEL=$(rpm -q --qf "%{INSTALLTIME} %{VERSION}-%{RELEASE}\n" $KERNEL_PACKAGE | sort -nr | head -n1 | cut -d' ' -f2- )
152+
LATEST_KERNEL=$(rpm -q --last --qf "%{INSTALLTIME}\t%{VERSION}-%{RELEASE}\n" $KERNEL_PACKAGE | grep -v $KERNEL_PACKAGE | sort -r | head -n1 | awk '{ print $2 }')
153+
LATEST_KERNEL="${LATEST_KERNEL%"${LATEST_KERNEL##*[![:space:]]}"}" # remove tailing whitespace
162154

163155
if [[ "$RUNNING_KERNEL" == "$LATEST_KERNEL" ]]; then
164156
BOOT_REQUIRED="no"
@@ -169,7 +161,8 @@ then
169161

170162
# Count available updates - different commands for different package managers
171163
if [ "$PKG_MGR" = "dnf5" ]; then
172-
UPDATES=$(timeout 25s dnf5 list --upgrades 2>/dev/null | grep -E "^[a-zA-Z]" | wc -l || echo "-1")
164+
LOCKEDRE=$(dnf5 versionlock list | grep -o -P '(?<=^Package name: ).+' | tr '\n' '|' | sed 's/|/\\.|/g; s/|$//')
165+
UPDATES=$(timeout 25s dnf5 list --upgrades 2>/dev/null | grep -E "^[a-zA-Z]" | tail -n +2 | grep -v -P "$LOCKEDRE" | wc -l || echo "-1")
173166
else
174167
UPDATES=$(timeout 25s $PKG_MGR -C --noplugins --quiet list updates 2>/dev/null | grep "\." | cut -d' ' -f1 | wc -l || echo "-1")
175168
fi

0 commit comments

Comments
 (0)