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
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
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? :)
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
Probiers mal mit
top -b -n 1 ...
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.
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 ...
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. :)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.