J'ai un problème assez étrange, j'exécute un script (Bash) sur plusieurs serveurs et il a cessé de fonctionner sur l'un des serveurs (fonctionne parfaitement bien sur tous les autres serveurs).
Voici la partie problématique du script: (je ne l'ai pas écrit moi-même, tous les crédits vont à "Rich") ( http://www.notrainers.org/monitoring-memory-usage-on-linux-with-nagios- and-nrpe / )
if [ "$result" -lt "$warn_level" ]; then #Line 56
echo "Memory OK. $result% used."
exit 0;
elif [ "$result" -ge "$warn_level" ] && [ "$result" -le "$critical_level" ]; then #Line 59
echo "Memory WARNING. $result% used."
exit 1;
elif [ "$result" -gt "$critical_level" ]; then #Line 62
echo "Memory CRITICAL. $result% used."
exit 2;
fi
Message d'erreur complet:
./check_memory.sh: Line 56: [: 7.: integer expression expected
./check_memory.sh: Line 59: [: 7.: integer expression expected
./check_memory.sh: Line 62: [: 7.: integer expression expected
Si vous avez besoin de plus d'informations, faites le moi savoir et j'essaierai de vous les fournir le plus rapidement possible.
Appréciez toutes les entrées :)
${result%%.*}serait l'expansion correcte pour supprimer le point décimal ici. Mais notez quecut -c -2cela entraînera également des problèmes avec des nombres de 100 ou plus, il est donc plus sûr de le supprimer complètement.