Ich habe ein ziemlich seltsames Problem, ich führe ein Skript (Bash) auf mehreren Servern aus und es funktioniert nicht mehr auf einem der Server (funktioniert einwandfrei auf allen anderen Servern).
Hier ist der problematische Teil des Skripts: (Ich habe es nicht selbst geschrieben, alle Credits gehen an "Rich") ( http://www.notrainers.org/monitoring-memory-usage-on-linux-with-nagios-) und-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
Komplette Fehlermeldung:
./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
Wenn Sie weitere Informationen benötigen, lassen Sie es mich wissen und ich werde versuchen, diese so schnell wie möglich bereitzustellen.
Schätzen Sie alle Eingaben :)
${result%%.*}
wäre die richtige erweiterung um hier den dezimalpunkt zu entfernen. Beachten Sie jedoch, dass diescut -c -2
auch zu Problemen mit Zahlen von 100 oder mehr führt. Es ist daher sicherer, das Programm vollständig fallen zu lassen.