PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Script liefert nichts zurück



blubbersuelze
02.11.08, 16:24
Hallo,

ich habe mir ein Script für Cacti gebastelt, welches auch funktioniert.
Allerdings liefert mir der Kernbefehl welcher mir die Daten zurückliefern soll, die mich interessieren nichts zurück wenn diese durch Cacti augerufen werden.
Wird das Script über cron aufgerufen liefert es auch nichts zurück.

Rufe ich das Script von Hand auf bekomme ich das gewünschte Ergebnis.

Der Befehl bei dem das Problem vorliegt lautet:

PROCESS=<irgendein Prozess>
OUTPUT=`top -n 1|grep $PROCESS| cut -dS -f2|cut -d: -f1|cut -d. -f1|sed "s/\ //"`
echo $OUTPUT

was kann ich machen das der Befehl mir Werte zurückliefert, auch wenn dieser über Dienste aufgerufen wird?

mfg.
blubbersuelze :p

Aqualung
02.11.08, 16:51
z.B. indem Du die Ausgabe über eine Datei realisierst:



PROCESS=<irgendein Prozess>
OUTPUT=`top -n 1|grep $PROCESS| cut -dS -f2|cut -d: -f1|cut -d. -f1|sed "s/\ //"`
echo $OUTPUT > /tmp/myoutput

blubbersuelze
02.11.08, 17:25
nützt nix .. der liefert mir auch nix zurück
selbst
OUTPUT=`top -n 1|grep $PROCESS`
echo $OUTPUT > /tmp/myoutput

produziert keine Ausgabe und gerade da sollte ich ja einiges angezeigt bekommen

auch

top -n 1|grep $PROCESS >/tmp/myoutput

ändert nichts an der Sache das es manuell aufgerufen klappt aber von cron oder cacti aufgerufen nichts zurückkommt
(ja das Script wird aufgerufen da die restlichen Ausgaben aussenrum alle sauber da sind)

weitere Ideen?

mfg.
blubbersuelze :p

zyrusthc
02.11.08, 18:35
Liegt vielleicht daran das bei Cron meist $PATH nicht gesetzt ist ;)

Greeez Oli

blubbersuelze
02.11.08, 18:56
ok
ich habe jetzt mal statt

OUTPUT=`top -n 1|grep $PROCESS`
echo $OUTPUT


OUTPUT=`/usr/bin/top -n 1|grep $PROCESS`
echo $OUTPUT

verwendet ... keine Änderung ...

auch
echo $OUTPUT > /tmp/myoutput nützt nix

weitere Ideen? :)

Aqualung
02.11.08, 20:43
An den Anfang Deines Skripts:


export PATH=/usr/bin:/usr/sbin:/sbin:/bin

oder *JEDES* Kommando mittels


which grep

mit ganzem Pfad


/usr/bin/grep

verwenden.

BTW: Fehler von cron landen in der Mailbox von root. Mit "sudo mail" kann man sich die anschauen. "3" zeigt die 3. Mail an, "q" schliesst den mailviewer. Mit "x" raus aus "mail".

blubbersuelze
02.11.08, 21:02
also das Script sieht jetzt so aus und es macht immernoch keine Ausgaben:

#!/bin/sh

export PATH=/usr/bin:/usr/sbin:/sbin:/bin

PROCESS=vmware-vmx
TEMP=/tmp/tempausgabe
OUTPUT=`top -n 1|grep $PROCESS| cut -dS -f2|cut -d: -f1|cut -d. -f1|sed "s/\ //"`

echo "--------------">> $TEMP
echo $OUTPUT >> $TEMP
echo "--------------">> $TEMP

Aqualung
02.11.08, 21:45
Probiers mal mit


top -b -n 1 ...

403
02.11.08, 21:49
kannst du den Prozess denn als user sehen? Wie schaut $OUTPUT aus bevor du umleitest?

BedriddenTech
02.11.08, 21:53
oder *JEDES* Kommando mittels


which grep

Das bringt insofern nichts, als daß "which" auch nur in den Verzeichnissen sucht, die in $PATH stehen. Plus: "which" liefert nicht in allen Implementierungen 1 zurück, wenn das Programm nicht gefunden wurde. Sinnvollerweise (und wenns wirklich nicht nur für den Eigengebrauch geschrieben wird) sollte man das mit einer kleinen Schleife im Skript lösen.

Aqualung
02.11.08, 22:08
Das bringt insofern nichts, als daß "which" auch nur in den Verzeichnissen sucht, die in $PATH stehen.

Damit meinte ich "während der Skripterstellung für jedes Kommando "which" ausführen", vorraussetzend, dass dann ein sinnvoller Pfad gesetzt ist ...

403
02.11.08, 22:13
*hust* :)

blubbersuelze
02.11.08, 22:14
das top -b -n 1 war es :)

danke :)

BedriddenTech
03.11.08, 19:01
Damit meinte ich "während der Skripterstellung für jedes Kommando "which" ausführen", vorraussetzend, dass dann ein sinnvoller Pfad gesetzt ist ...

Oh, pardon. :)