#!/bin/bash # Script zur Ermittlung der korrekten Befehls-/Programmversionen # (Script immer mit root-Rechten ausführen!) # (c) Copyright by Xpoint Software GmbH if [ $UID -ne 0 ] then echo -e "\033[38;5;196m Fehler! Script mit root-Rechten ausführen!\033[0m" exit fi print_status() { text="${1:-text}" cols="$(tput cols)" pad="$((cols - 1 - ${#text} - 1 - 6 - 1))" padding="." for fnord in $(seq "$pad"); do padding="$padding." done if [ $2 == "0" ] then echo -e "$text$padding\033[38;5;46m [GOOD]\033[0m" else if [ $2 == "1" ] then echo -e "$text$padding\033[38;5;226m [ OK ]\033[0m" else if [ $2 == "2" ] then echo -e "$text$padding\033[38;5;32m [TEST]\033[0m" else echo -e "$text$padding\033[38;5;196m [FAIL]\033[0m" fi fi fi } calc_versions() { regex='^[0-9]+$' major=$(echo $2 |cut -d. -f1) if ! [[ $major =~ $regex ]] then major=0 fi minor=$(echo $2 |cut -d. -f2) if ! [[ $minor =~ $regex ]] then minor=0 fi build=$(echo $2 |cut -d. -f3) if ! [[ $build =~ $regex ]] then build=0 fi majormin=$(echo $3 |cut -d. -f1) if ! [[ $majormin =~ $regex ]] then majormin=0 fi minormin=$(echo $3 |cut -d. -f2) if ! [[ $minormin =~ $regex ]] then minormin=0 fi buildmin=$(echo $3 |cut -d. -f3) if ! [[ $buildmin =~ $regex ]] then buildmin=0 fi majormax=$(echo $4 |cut -d. -f1) if ! [[ $majormax =~ $regex ]] then majormax=0 fi minormax=$(echo $4 |cut -d. -f2) if ! [[ $minormax =~ $regex ]] then minormax=0 fi buildmax=$(echo $4 |cut -d. -f3) if ! [[ $buildmax =~ $regex ]] then buildmax=0 fi ver=$(bc -l <<<"$major*1000000000000+$minor*1000000+$build") vermin=$(bc -l <<<"$majormin*1000000000000+$minormin*1000000+$buildmin") vermax=$(bc -l <<<"$majormax*1000000000000+$minormax*1000000+$buildmax") if [ $5 -ne 0 ] then result=3 else if [ $ver -lt $vermin ] then result=2 else if [ $ver -gt $vermax ] then result=2 else if [ $ver -lt $vermax ] then result=1 else result=0 fi fi fi fi version=$(echo $2 |sed -e "s/_/ /g") printf -v prg '%-12s: ' $1 print_status " $prg$version (Soll: $3-$4) " $result } check_cmd() { if [ "$1" = "net-tools" ] then cmd=$(which "netstat" 2>/dev/null) else cmd=$(which $1 2>/dev/null) fi if [ ! -e "$cmd" ] then calc_versions $1 "nicht_gefunden" $2 $3 1 else calc_versions $1 $4 $2 $3 0 fi } echo " Linux CoreUtils:" echo " ================" check_cmd "basename" "6.12" "9.1" $(basename --version 2>/dev/null |grep basename |sed -e "s/basename (GNU coreutils) //g" |cut "-d " -f1) check_cmd "cat" "6.12" "9.1" $(cat --version 2>/dev/null |grep cat |sed -e "s/cat (GNU coreutils) //g" |cut "-d " -f1) check_cmd "chmod" "6.12" "9.1" $(chmod --version 2>/dev/null |grep chmod |sed -e "s/chmod (GNU coreutils) //g" |cut "-d " -f1) check_cmd "chown" "6.12" "9.1" $(chown --version 2>/dev/null |grep chown |sed -e "s/chown (GNU coreutils) //g" |cut "-d " -f1) check_cmd "cp" "6.12" "9.1" $(cp --version 2>/dev/null |grep cp |sed -e "s/cp (GNU coreutils) //g" |cut "-d " -f1) check_cmd "cut" "6.12" "9.1" $(cut --version 2>/dev/null |grep cut |sed -e "s/cut (GNU coreutils) //g" |cut "-d " -f1) check_cmd "date" "6.12" "9.1" $(date --version 2>/dev/null |grep date |sed -e "s/date (GNU coreutils) //g" |cut "-d " -f1) check_cmd "df" "6.12" "9.1" $(df --version 2>/dev/null |grep df |sed -e "s/df (GNU coreutils) //g" |cut "-d " -f1) check_cmd "du" "6.12" "9.1" $(du --version 2>/dev/null |grep du |sed -e "s/du (GNU coreutils) //g" |cut "-d " -f1) check_cmd "ln" "6.12" "9.1" $(ln --version 2>/dev/null |grep ln |sed -e "s/ln (GNU coreutils) //g" |cut "-d " -f1) check_cmd "ls" "6.12" "9.1" $(ls --version 2>/dev/null |grep ls |sed -e "s/ls (GNU coreutils) //g" |cut "-d " -f1) check_cmd "mkdir" "6.12" "9.1" $(mkdir --version 2>/dev/null |grep mkdir |sed -e "s/mkdir (GNU coreutils) //g" |cut "-d " -f1) check_cmd "mv" "6.12" "9.1" $(mv --version 2>/dev/null |grep mv |sed -e "s/mv (GNU coreutils) //g" |cut "-d " -f1) check_cmd "rm" "6.12" "9.1" $(rm --version 2>/dev/null |grep "rm " |sed -e "s/rm (GNU coreutils) //g" |cut "-d " -f1) check_cmd "wc" "6.12" "9.1" $(wc --version 2>/dev/null |grep wc |sed -e "s/wc (GNU coreutils) //g" |cut "-d " -f1) echo "" echo " Common Unix Printing System (CUPS):" echo " ===================================" check_cmd "cups-config" "1.7.5" "2.3.3" $(cups-config --version 2>/dev/null |sed -e "s/op2//g"|cut "-d " -f1) check_cmd "cups" "2.3.3" "2.3.3" $(apt policy cups 2>/dev/null | grep -i "Installiert:" | cut "-d " -f2) echo "" echo " Samba-Server:" echo " =============" check_cmd "smbd" "3.0" "4.17.10" $(smbd --version 2>/dev/null |sed -e "s/Version //g" -e "s/-Ubuntu//g" -e "s/-/ /g" |cut "-d " -f1) check_cmd "nmbd" "3.0" "4.17.10" $(nmbd --version 2>/dev/null |sed -e "s/Version //g" -e "s/-Ubuntu//g" -e "s/-/ /g" |cut "-d " -f1) echo "" echo " Weitere Befehle/Softwarepakete:" echo " ===============================" check_cmd "bash" "3.2.51" "5.2.15" $(bash --version 2>/dev/null |grep bash |sed -e "s/GNU bash, version //g" -e "s/GNU bash, Version //g" -e "s/(/ /g" |cut "-d " -f1) check_cmd "curl" "7.19" "8.0.1" $(curl --version 2>/dev/null |grep curl |sed -e "s/curl //g" |cut "-d " -f1) check_cmd "diff" "2.8.1" "3.8" $(diff --version 2>/dev/null |grep diff |sed -e "s/diff (GNU diffutils) //g" -e "s/-cvs//g" |cut "-d " -f1) check_cmd "file" "5.19" "5.44" $(file --version 2>/dev/null |grep file- |sed -e "s/file-//g" |cut "-d " -f1) check_cmd "find" "4.4" "4.9.0" $(find --version 2>/dev/null |grep find |sed -e "s/find (GNU findutils) //g" |cut "-d " -f1) check_cmd "grep" "2.5.2" "3.8" $(grep --version 2>/dev/null |grep grep |grep -v "Geschrieben von" |grep -v "Written" |sed -e "s/grep (GNU grep) //g" -e "s/GNU grep //g" |cut "-d " -f1) check_cmd "gs" "8.62" "10.0.0" $(gs --version 2>/dev/null |cut "-d " -f1) check_cmd "gunzip" "1.3.12" "1.12" $(gunzip --version 2>/dev/null |sed -e "s/gzip/gunzip/g" |grep gunzip |sed -e "s/gunzip (gunzip) //g" -e "s/gunzip //g" |cut "-d " -f1) check_cmd "gzip" "1.3.12" "1.12" $(gzip --version 2>/dev/null |grep gzip |sed -e "s/gzip //g" |cut "-d " -f1) check_cmd "htop" "1.0.3" "3.2.2" $(htop --version 2>/dev/null |grep htop |sed -e "s/htop //g" |cut "-d " -f1) check_cmd "locate" "0.26" "0.26" $(locate --version 2>/dev/null |grep locate |sed -e "s/mlocate //g" |cut "-d " -f1) man mail |head -n1 |grep -i "mailx" >/dev/null 2>&1 if [ "$?" == "0" ] then check_cmd "mail" "12.2" "12.5" $(mail -V 2>/dev/null |cut "-d " -f1) else check_cmd "mail" "3.10" "3.15" $(mail --version 2>/dev/null |sed -e "s/mail (GNU Mailutils) //g") fi check_cmd "mutt" "1.5.17" "2.2.12" $(mutt -v 2>/dev/null |grep "Mutt" |grep "(20" |sed -e "s/Mutt //g" |cut "-d " -f1) check_cmd "net-tools" "1.60" "2.10" $(netstat --version 2>/dev/null |grep "net\-tools" |sed -e "s/net\-tools //g" -e "s/\-/ /g" |cut "-d " -f1) check_cmd "pdf2pdf" "4.12.26" "4.12.26" $(pdf2pdf 2>/dev/null |grep "Convert PDF to PDF/A documents. Version " |sed -e "s/Convert PDF to PDF\/A documents. Version //g" |cut "-d " -f1) check_cmd "pdftk" "1.44" "3.3.2" $(pdftk --version 2>/dev/null |grep pdftk |grep -v Copyright |grep -v "includes a modified version" |sed -e "s/pdftk port to java //g" -e "s/pdftk //g" -e "s/.0/./g" |cut "-d " -f1) check_cmd "pdxt" "4.12.26" "4.12.26" $(pdxt 2>/dev/null |grep "Add a logo (XObject) to a PDF file. Version " |sed -e "s/Add a logo (XObject) to a PDF file. Version //g" |cut "-d " -f1) check_cmd "perl" "5.8.8" "5.36.0" $(perl --version 2>/dev/null |grep perl |grep built |sed -e "s/This is perl //g" -e "s/This is perl, v//g" -e "s/, version /./g" -e "s/, subversion /./g" |cut "-d " -f1) check_cmd "ps" "3.2.7" "4.0.2" $(ps --version 2>/dev/null |sed -e "s/procps-ng version //g" -e "s/ps von procps-ng //g" -e "s/ps from procps-ng //g" -e "s/procps version //g" |cut "-d " -f1) check_cmd "pstree" "22.6" "23.6" $(pstree -V 2>&1 |grep pstree |sed -e "s/pstree (PSmisc) //g" |cut "-d " -f1) check_cmd "qpdf" "8.4" "11.3.0" $(qpdf --version 2>/dev/null |grep qpdf |sed -e "s/qpdf version //g" |cut "-d " -f1) check_cmd "sed" "4.1.5" "4.9" $(sed --version 2>/dev/null |grep "GNU sed" |sed -e "s/sed (GNU sed) //g" -e "s/GNU sed version //g" -e "s/GNU sed Version //g" -e "s/GNU sed-Version //g" -e "s/GNU//g" |cut "-d " -f1) check_cmd "shasum" "5.45" "6.2" $(shasum --version 2>/dev/null |cut "-d " -f1) check_cmd "tar" "1.20" "1.34" $(tar --version 2>/dev/null |grep tar |sed -e "s/tar (GNU tar) //g" |cut "-d " -f1) check_cmd "wget" "1.11.4" "1.21.3" $(wget --version 2>/dev/null |grep "GNU Wget" |sed -e "s/GNU Wget //g" |cut "-d " -f1) check_cmd "xmllint" "20706" "20914" $(xmllint --version 2>&1 |grep "xmllint: using libxml version" |sed -e "s/xmllint: using libxml version//g") echo "" echo " top (einer sollte funktionieren):" echo " =================================" check_cmd "top" "3.2.7" "4.0.2" $(top -v 2>/dev/null |grep "procps" |sed -e "s/ procps-ng version //g" -e "s/top: procps version //g" -e "s/ procps-ng //g" |cut "-d " -f1) check_cmd "top" "3.2.7" "4.0.2" $(top --version |grep "top from procps-ng" |sed -e "s/top from procps-ng //g") echo "" echo " Legende:" echo " ========" echo -e "\033[38;5;46m [GOOD]\033[0m - Sie nutzen die beste von uns getestete Version" echo -e "\033[38;5;226m [ OK ]\033[0m - Sie nutzen eine von uns geteste Version" echo -e "\033[38;5;32m [TEST]\033[0m - Sie nutzen eine Version die noch nicht getestet wurde" echo -e " Bitte wenden Sie sich umgehend an den Support von Xpoint" echo -e " und lassen Sie diese Version überprüfen" echo -e "\033[38;5;196m [FAIL]\033[0m - Das Programm wurde nicht gefunden"