From 3e5d7465cc5ece418a7d8f94362d5741a5eda11d Mon Sep 17 00:00:00 2001 From: ageissler Date: Mon, 30 Dec 2024 17:57:39 +0100 Subject: [PATCH] usr/lib/observium_agent/scripts-available/proxmox-qemu aktualisiert Nach Erweiterung von Alex Koppe (qm guest cmd ${vmid} get-osinfo | jq -r '.["pretty-name"]') um einen exakten OS Namen aus einer laufenden VM zu bekommen, weitere Erweiterung vorgenommen diese Info zu cachen und sollte "qm guest cmd VMID get-osinfo" keine Info (mehr) liefern die Info aus dem Cache zu liefern. --- .../scripts-available/proxmox-qemu | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/usr/lib/observium_agent/scripts-available/proxmox-qemu b/usr/lib/observium_agent/scripts-available/proxmox-qemu index e8b0d9e..2fcc4c4 100644 --- a/usr/lib/observium_agent/scripts-available/proxmox-qemu +++ b/usr/lib/observium_agent/scripts-available/proxmox-qemu @@ -18,18 +18,41 @@ then fi count=`echo $JSON | jq '. | length' ` +CACHE="/usr/lib/observium_agent/scripts-enabled/cached" for ((i=0; i<$count; i++)); do name=`echo $JSON | jq -r '.['$i'].name'` vmid=`echo $JSON | jq -r '.['$i'].vmid'` - ostype=`cat /etc/pve/qemu-server/${vmid}.conf | grep ostype | awk '{print $2}'` + + exec 2>/dev/null + var1=`qm guest cmd ${vmid} get-osinfo | jq -r '.["pretty-name"]'` + var2=`cat cached | grep ${vmid} | awk -F':' '{print $2}'` + var3=`cat /etc/pve/qemu-server/${vmid}.conf | grep ostype | awk '{print $2}'` + + ostype=$var1 + if [[ -z "$ostype" || "$ostype" == *"is not running"* || "$ostype" == *"QEMU guest agent configured"* ]]; then + ostype=$var2 + if [[ -z "$ostype" ]]; then + ostype="$var3 TOOLS!" + fi + else + sed -i "s|$vmid:.*|$vmid:$var1|" $CACHE + fi + + if [[ -z "$var2" ]]; then + grep $vmid $CACHE > /dev/null + if [ "$?" == "1" ]; then + echo "$vmid:" >> $CACHE + fi + fi + if [ "$i" == "0" ] then CMD=".[$i] += {\"os\":\"$ostype\"}" else CMD=$CMD" | .[$i] += {\"os\":\"$ostype\"}" fi - #echo "$name is $vmid" + #echo "$name is $vmid # $var1 ## $var2 ### $var3" ; echo "---" done jqcmd=(jq "$CMD")