![]() |
[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:
letzteres macht auch das 2. script von mir:
[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
Code:
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
[root|/usr/local/bin]: cat temp
#!/bin/sh #temperature=`/bin/cat /var/log/digitemp/s0` #echo $temperature echo 22 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:
noch paar hintergrundinfos:
[root|/usr/local/bin]: cat cacti_temp0
#!/bin/sh op=`/usr/local/bin/temp` #|/usr/bin/awk '{print $7}'` echo $op 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 |
Re: [linux] script-problem mit cacti
Code:
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.
#!/bin/sh
temperature=`/bin/cat /var/log/digitemp/s0` echo $temperature
Code:
sollte ausreichen, oder zumindest echo -n ;)
#!/bin/sh
/bin/cat /var/log/digitemp/s0 |
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 |
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 00:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz