Hallo, Am Mon, 26 Aug 2013, Alex Winzer schrieb:
On 25.08.2013 23:50, David Haller wrote:
Am Sun, 25 Aug 2013, Alex Winzer schrieb:
Kann mir jemand sagen, wie ich ohne root zu sein Zugriff auf /dev/sd? erhalte? [..] [1] http://linux.blogteil.de/jpgraph.html
Verwende statt smartctl einfach den hddtemp daemon, dann kannst du die Temperaturdaten einfacher per Socket abholen:
$ netcat localhost 7634 |/dev/sda|SAMSUNG SSD 830 Series|30|C||[..]
Das kannst du auch per PHP auslesen.
Der hddtemp daemon läuft bei mir sowieso. Funktioniert also perfekt. Noch ein bisschen mit explode() und substr() nachgeholfen und man hat das Ergebnis.
*bg* Meine Lösung steht unten (wie man das assoz.-Array an jpgraph verfüttert hab ich nimmer geschaut) ;) Hach, das liebe ich an *nix einfach. Wobei, inzwischen kann man vielleicht auch unter >= Win7 per PowerShell was ähnliches machen, nur hängt da wohl dutzend-MB-weise .NET und anderer Krams dran. Denn untiges PHP geht auch mit shell / netcat / wohl awk / perl / python / ruby nochmal einiges schlanker als mit /usr/bin/php ;) Aber wenn man das in ne PHP-generierte Webseite einbetten will vergess sogar ich meinen Hass auf PHP. HTH, -dnh ==== hddtemps.php ==== #!/usr/bin/php <?php error_reporting(E_ALL); $address = 'localhost'; $port = 7634; $temps = ""; if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) { echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n"; } if (socket_connect($sock, $address, $port) === false) { echo "socket_connect() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n"; } while ($out = socket_read($sock, 2048)) { $temps .= $out; } socket_close($sock); $temps = trim($temps, "|"); $disks = explode("||", $temps); foreach($disks as $val) { $t = explode("|", $val); if($t[0] && $t[2] != "ERR") { $disktemps[$t[0]] = $t[2]; } } print_r($disktemps); ?> ==== Anmerkung: ich hab hier für hddtemp auch für externe LWs was definiert (DEVICE="... SATA:/dev/sdj"), das gibt bei der Abfrage dann eben z.B.: |/dev/sdj|???|ERR|*| wenn /dev/sdj nicht da ist. Ist aber nützlich, wenn man mal ne größere Menge auf /dev/sdj schieben will welches (variierend) teils nicht gut gekühlt ist, also darauf ausgelegt, daß da auch mal eben z.B. 100GB drauf geschrieben werden sollen (man muß halt rchddtemp restart bzw. systemctl ... machen). Wenn man die Temperatur dann vom ext. LW im Blick hat (hier mit gkrellm), kann man ne Pause einlegen wenn's dem LW arg warm wird ... ;) Die Einbindung der Diskbezeichungen und die evtl. Behandlung/Umrechnung/Ausgabe der Temperaturangaben in Fahrenheit etc. bleibt dem Leser überlassen. -- "Wir haben in Deutschland seit 1918 die Trennung von Staat und Kirche, und seit 1989 die von Moral und Wirtschaft." -- Frank Lüdecke -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org