Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [linux] script-problem mit cacti (solved) (https://www.delphipraxis.net/118577-%5Blinux%5D-script-problem-mit-cacti-solved.html)

_frank_ 10. Aug 2008 23:57


[linux] script-problem mit cacti (solved)
 
moin,
ich hab mir mal einen Temperatursensor gebastelt und es funktioniert auch soweit ;)

ich habe eine reihe vom scripts, um den sensor auszulesen, funktioniert auf der console ohne probleme, nur in cacti wird nichts ausgegeben.

zuerst habe ich in der crontab ein script, was mir alle 5 Minuten den sensor ausliest und in eine textdatei schreibt.
Code:
[root|/usr/local/bin]: ls -l /var/log/digitemp/s0
-rw-r--r-- 1 frank frank 43 2008-08-11 00:25 /var/log/digitemp/s0

[root|/usr/local/bin]: cat /var/log/digitemp/s0
Aug 11 00:25:02 Sensor 0 C: 24.94 F: 76.89
letzteres macht auch das 2. script von mir:
Code:
[root|/usr/local/bin]: cat temp
#!/bin/sh
#temperature=`/bin/cat /var/log/digitemp/s0`
#echo $temperature
echo 22
in diesem Script ist der Knackpunkt. momentan wird nur 22 ausgegeben und cacti frisst das ohne Probleme, ist aber nicht Sinn und Zweck :) habs auch schon mit "22.5" probiert (wegen dezimaltrenner), funktioniert auch

wenn ich meine realen Werte nehmen will (also 2. und 3. zeile auskommentiere und die letzte rausnehme) funktioniert das auf der console (auch ohne root-rechte), aber cacti springt mich mit der Meldung "CMDPHP: Poller[0] Host[1] DS[8] WARNING: Result from CMD not valid. Partial Result: " an. Hierbei ist zu beachten, dass hinter Result kein text steht. wäre eine falsche Ausgabe (Buchstaben, etc), würde da die ausgabe stehen. es wird also nichts zurückgegeben.
imho nimmt cacti zu ausführen die cmd.php, aber wie das script letztendlich aufgerufen wird, konnte ich noch nicht genau nachvollziehen...

dass die variablen zuweisung funktioniert sehe ich im nächste script (welches von cacti aufgerufen wird):
Code:
[root|/usr/local/bin]: cat cacti_temp0         
#!/bin/sh
op=`/usr/local/bin/temp`
#|/usr/bin/awk '{print $7}'`
echo $op
noch paar hintergrundinfos:
Temperatursensor DS1820
DigiTemp v3.3.2 Copyright 1996-2004 by Brian C. Lane
Debian etch (aktuelles patchlevel), kernel: 2.6.16.18
Cacti-version...laut apt-cache cacti_0.8.6i-3.5_all.deb

ich kann mir absolut nicht erklären, warum die Ausgabe leer ist, aber vielleicht hat hier ja jemand eine Idee...

Gruß Frank

Dax 11. Aug 2008 00:09

Re: [linux] script-problem mit cacti
 
Code:
#!/bin/sh
temperature=`/bin/cat /var/log/digitemp/s0`
echo $temperature
Dein Programm wird einen simplen Wert Marke (d+(\.d+)?)|(\.d+) erwarten - dann ist es kein Wunder, dass es so nicht funktioniert. echo hängt ein \n an die Ausgabe, und der Weg über `` ist überflüssig.
Code:
#!/bin/sh
/bin/cat /var/log/digitemp/s0
sollte ausreichen, oder zumindest echo -n ;)

_frank_ 11. Aug 2008 00:18

Re: [linux] script-problem mit cacti
 
habs mal so gemacht nur mit cat, aber gleiches resultat...wie gesagt, mit echo 22.5 funktioniert es nur halt nicht über cat.
und ich habe keinen zusätzlichen zeilenumbruch (echo $temperature sah genauso aus auf der console wie echo 22.5)
habe auch schon geschaut, ob cat evtl in stderr schreibt (2>/dev/null), aber das ist auch nicht der Fall.
mir ist auch aktuell noch ein rätsel, mit welchem benutzer cacti arbeitet (www-data vom webserver vielleicht). echo $USER ist jedenfalls auch leer.

Gruß Frank

_frank_ 11. Aug 2008 09:30

Re: [linux] script-problem mit cacti
 
habe herausgefunden, woran es lag...
da beide "timer" (cron/cacti) auf 5 minuten lagen, war im Moment des cacti-Zugriffs die datei gerade leer/gelockt. nachdem ich den crontimer per 2-59/5 um 2 minten verschoben habe, funktioniert es auch mit cacti ohne probleme.

Gruß Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz