Ich möchte gerne auf einer meiner Linux Rechner div. Statistiken erstellen.
Dazu verwende ich PHP4 Scripte, welche mir Werte in eine MySQL DB speichert, welche dann später vom Web Frontend wieder ausgelesen werden und evtl. ein paar hübsche Grafiken erstellt.
Eines dieser Scripte soll mir die Temperetaur meiner Festplatten in die DB speichern.
Alle Festplatten sind in der DB erfasst und werden hier ausgelesen und dann für jede einzelne den Wert 'temp' geupdatet.
Jedoch funktioniert die if - Abfrage mit eregi() nicht:
In der DB vorhanden sind folgende Disks: hda, hdc, sda bis sdh
Im System eingebaut sind diese: hda, sda bis sdf (die restlichen kommen später noch)
Er gibt mir bei jeder Disk 'yes' aus, was nicht sein soll.
Wie ihr seht ist die Fehlermeldung von 'hddtemp' 'No such device or address' und genau darauf überprüfe ich auch den $output String. Geht aber nicht
Warum?
Müsste doch so funktionieren?
Zweite Frage
Kann ich der Funktion shell_exec() oder dem ganzen Script irgendwie beibringen, bei Fehlermeldungen kein Output zu liefern?
Dazu verwende ich PHP4 Scripte, welche mir Werte in eine MySQL DB speichert, welche dann später vom Web Frontend wieder ausgelesen werden und evtl. ein paar hübsche Grafiken erstellt.
Eines dieser Scripte soll mir die Temperetaur meiner Festplatten in die DB speichern.
Code:
<?php
mysql_connect('localhost','user','pw');
mysql_select_db('server');
$_hddtemp = "/usr/sbin/hddtemp";
$sql = "SELECT id,disk FROM hddtemp;";
$result = mysql_query($sql);
if(mysql_num_rows($result)) {
while ($row = mysql_fetch_array($result)) {
//print_r($row);
$output = shell_exec($_hddtemp." ".$row[disk]);
if (!eregi ("No such device",$output)) {
$out = explode(" ", $output);
//print_r($out);
$sql = "UPDATE hddtemp SET temp = ".$temp." WHERE id = ".$row[id].";";
echo "yes\n";
} else {
echo "no\n";
}
}
}
?>
Jedoch funktioniert die if - Abfrage mit eregi() nicht:
Code:
root@ragnaros /testdata/stats/hddtemp
> php4 update.db.php
yes
/dev/hdc: open: No such device or address
yes
yes
yes
yes
yes
yes
yes
/dev/sdg: open: No such device or address
yes
/dev/sdh: open: No such device or address
yes
Im System eingebaut sind diese: hda, sda bis sdf (die restlichen kommen später noch)
Er gibt mir bei jeder Disk 'yes' aus, was nicht sein soll.
Wie ihr seht ist die Fehlermeldung von 'hddtemp' 'No such device or address' und genau darauf überprüfe ich auch den $output String. Geht aber nicht
Warum?
Müsste doch so funktionieren?
Zweite Frage
Kann ich der Funktion shell_exec() oder dem ganzen Script irgendwie beibringen, bei Fehlermeldungen kein Output zu liefern?