mrtg mit Zahlen kleiner 0

18/04/2011 - 16:22 von Jan Novak | Report spam
Hallo,

ich möchte mir mit mrtg eine Statistik ausgeben:

mywait=$(LANG=C top -n 1|grep "Cpu"|cut -f10 -d" "| sed -e s/%.*$//)

da kommt dann z.B. 0.8 raus. Diesen Wert kann mrtg nicht anzeigen. In
einem Forum habe ich gelesen, dass ich das mit 100 multiplizieren muss.
OK, geht baer auch nicht, weil

INDATA=$(expr $mywait * 100)

oder auch

INDATA=$(echo $mywait * 100|bc -l)

einen Fehler wirft. Seltsamerweise funktioniert das ganze auf der shell
aber problemlos.

Jan
 

Lesen sie die antworten

#1 Joerg Mertens
18/04/2011 - 18:44 | Warnen spam
Jan Novak writes:

ich möchte mir mit mrtg eine Statistik ausgeben:

mywait=$(LANG=C top -n 1|grep "Cpu"|cut -f10 -d" "| sed -e s/%.*$//)

da kommt dann z.B. 0.8 raus. Diesen Wert kann mrtg nicht anzeigen. In
einem Forum habe ich gelesen, dass ich das mit 100 multiplizieren
muss. OK, geht baer auch nicht, weil

INDATA=$(expr $mywait * 100)



Der Asterisk wird von der shell expandiert und muss, z.B. per Backslash,
entwertet werden. Zumindest bei mir kann expr aber ohnehin nur
Integer-Werte multiplizieren.

oder auch

INDATA=$(echo $mywait * 100|bc -l)

einen Fehler wirft. Seltsamerweise funktioniert das ganze auf der
shell aber problemlos.



Hier dasselbe Problem, daher:

$ INDATA=$(echo "$mywait * 100" | bc -l)

Interaktiv hat es vielleicht deshalb funktioniert, weil du in einem
leeren Verzeichnis warst. In diesem Fall wird '*' natürlich nicht
expandiert.

Jörg

Ähnliche fragen