#!/bin/bash ########################################## # ProxMox update tools # # Get OS release info on all CT`s/VM`s # # @author: Bram Prieshof # ########################################## #Dirs WorkDir=$(dirname $0) #InventoryFile InventoryFile=$WorkDir/GuestInventory.csv #Load functions source $WorkDir/functions.sh #Get what sould be checked CheckVM=true CheckCT=true echo "Type,ID,Name,Status,Distro,Version" | tee $InventoryFile #CT Inventory if $CheckCT; then TYPE=CT; for ID in $(pct list | tail -n+2 | awk '{print $1}'); do STATUS=$(pct status $ID |sed 's/status: //') NAME=$(pct config $ID | grep hostname |sed 's/hostname: //') if [ $STATUS == "running" ]; then OSRELEASE=$(pct exec $ID -- cat /etc/os-release);fi ParseOSRelease unset OSRELEASE ID NAME STATUS DISTRO VERSION done unset TYPE fi #VM inventory if $CheckVM; then TYPE=VM; for ID in $(qm list | tail -n+2 | awk '{print $1}'); do STATUS=$(qm status $ID |sed 's/status: //') NAME=$(qm config $ID | grep name |sed 's/name: //') OSYPE=$(qm config $ID | grep ostype |sed 's/ostype: //') if [ $STATUS == "running" ]; then if [[ $OSYPE == *"win"* ]]; then DISTRO=Windows VERSION=$(qm guest exec $ID "systeminfo" |jq -r '.["out-data"]'| grep "OS Name" |sed -e 's/OS Name://' -e 's/^[ \t]*//' -e 's/Microsoft Windows//' -e 's/^[ \t]*//') echo "$TYPE,$ID,$NAME,$STATUS,$DISTRO,$VERSION" | tee -a $InventoryFile else OSRELEASE=$(qm guest exec $ID -- cat /etc/os-release |jq -r '.["out-data"]') fi fi ParseOSRelease unset OSRELEASE OSYPE ID NAME STATUS DISTRO VERSION done unset TYPE fi