Anzeige der wichtigsten Systeminformationen im Disk Station Manager

Status
Für weitere Antworten geschlossen.

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
jaaha ... du machst ne Kopie in die Zwischenablage in Windows und hast dann natürlich die Windows-Zeilenenden ... die stören nicht unbedingt immer, aber wenn eine Zeile umgebrochen wird, dann schon :D

WIR LIEBEN WINDOWS :p
 

dathen

Benutzer
Mitglied seit
29. Mai 2007
Beiträge
65
Punkte für Reaktionen
0
Punkte
0
Das mit den weißen Diagrammen liegt an den Spaces in der URL im CGI. Die mußt Du einfach löschen. Konkret ist das direkt vor "chf=bg" und vor "chd=$(". Ich hab versucht, die Änderung hier darzustellen, wird aber im Forum nicht korrekt angezeigt...

Die Leerzeichen kommen wohl vom Kopieren aus dem Browser über die Zwischenablage ins sysinfo.cgi ...

Hoffe, das hilft weiter...

Gruß, dathen

PS: Ok, haste schon selbst rausgefunden... ;)
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
ProcessTime

in dem info.cgi-Skript kann man den Abschnitt <h3><a name="processes" ... (bis zum nächsten <h3>)gegen den folgenden Abschnitt austauschen:

Rich (BBCode):
<h3><a name="processes" href="#back">Processes</h3></a><div style="float:left;padding-right:5px">
<pre>$(awk 'NR==1{u=($2+$3)/100;s=$4/100;g=u+s;i=$5/100;a=g+i;printf("User Process Time  : %10.2f sec  %5.2f %%\
System Process Time: %10.2f sec  %5.2f %%\
--------------------------------------------\
Busy Time          : %10.2f sec  %5.2f %%\
Idle Time          : %10.2f sec  %5.2f %%\n",u,u/a*100,s,s/a*100,g,g/a*100,i,i/a*100)}' /proc/stat)</pre></div>
<img style="margin-top:-30px"
src="http://chart.apis.google.com/chart?cht=p3&chs=250x120&chco=0000ff&
chf=bg,s,efefef00&chl=User|System|Idle&chtt=ProcessTime&
chd=$(awk 'NR==1{u=($2+$3);s=$4;i=$5;a=g+i;printf("t:%d,%d,%d",u/a*100,s/a*100,i/a*100)}' /proc/stat)">
<pre>$(ps)</pre>

Damit erhält man folgende zusätzliche Informationen: ProcessTime-Verteilung seit dem letzten Systemstart. Erläuterung:

User: Prozesszeit, die die Programme im User-Mode verbraucht haben
System: Prozesszeit, die die Programme beim Aufruf der System-Calls verbraucht haben
Busy: User + System
Idle: Zeit, in der der Kernel auf Prozesse gewartet hat (Leerlaufzeit)
 

Anhänge

  • processtime.jpg
    processtime.jpg
    38,7 KB · Aufrufe: 321

drago

Benutzer
Mitglied seit
17. Jun 2008
Beiträge
328
Punkte für Reaktionen
0
Punkte
16
also ich werde aus dieser anleitung nicht schlau.

wie meint hier das mit chmod 755 auf info.cgi setzen??
 

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Die hier verwendeten cgi-Skripte (cgi = common gateway interface) sind ganz normale Shell-Skripte, die von einer Shell ausgeführt werden sollen. Deshalb steht auch in der ersten Zeile als Kommentar drin, welche Shell es sein soll. (Da es sehr schwierig zu erklären ist, warum ein Kommentar eine steuernde Funktion hat, lass ich es lieber.)

Damit eine Shell eine Datei (in diesem Fall eine Skript-Datei) ausführen kann, muss die Datei die sogenannten Ausführungsrechte (execute) besitzen. Normalerweise wird aber mit dem Editor eine Datei ohne Ausführungsrecht geschrieben. Folglich muss man nachträglich diese Ausführungsrechte setzen. Das kann man mit dem Kommando chmod (change modus) machen, also z. B. so: chmod +x dateiname oder halt oktal mit chmod 755 dateiname. 755 steht dabei für rwxr-xr-x Nun kann man sich das ausrechen, wenn man die Rechte als Bitwert im Oktalsystem nimmt: Recht an = 1 Recht aus = 0.

Alles klar?

itari
 

drago

Benutzer
Mitglied seit
17. Jun 2008
Beiträge
328
Punkte für Reaktionen
0
Punkte
16
wunderbar, jetzt funktioniert es :)
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
super drago :)
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Ich habe die Skripte vor Monaten noch einmal etwas überarbeitet und sie laufen bislang immer noch ohne Fehl und Tadel auf meiner DS207+. Wer sie sich im Detail anschauen möchte bzw. laden möchte, kann das hier tun.

Itari
 

john12

Benutzer
Mitglied seit
03. Mrz 2009
Beiträge
11
Punkte für Reaktionen
0
Punkte
0
Leider arbeitet dass Download nicht auf diese seite, bekomme eine Fehlermeldung.
 

john12

Benutzer
Mitglied seit
03. Mrz 2009
Beiträge
11
Punkte für Reaktionen
0
Punkte
0
Hallo Itari,

Ich habe versucht um auf ihre Homepage unter System Administration die letzte version zu downloaden, aber leider bekomme ich eine Fehlermeldung (siehe unten)

Itari_SysInfo.JPG
 

djinibaby

Benutzer
Mitglied seit
31. Jan 2009
Beiträge
71
Punkte für Reaktionen
0
Punkte
6
Hi,

ich habe jetzt die ganzen Dateien von itari´s page geladen und installiert.

Soweit funktioniert auch alles ganz gut, nur die SMART und Temperaturanzeige bekomme ich nicht hin.

Ich habe das diskhealth.cgi umgearbeitet, damit 4 HDs meiner DS408 erkannt werden. Das funktioniert aber nicht so richtig. Zwar werden einige Temperaturen angezeigt, nur nicht die Balken. Es fehlt die Temperatur der Platten 3 und 4 und die Durchschnittstemp der Platten 3 und 4 und die ganzen Balken in der Grafik.

Ich hoffe es kann jemand helfen .... itari hör meinen ruf :D




Hier noch meine diskhealth.cgi

PHP:
#!/bin/ash
export GET
cat <<EOT
Content-type: text/html

<html><head><title>System-Info</title><style>body{font:11px Arial;}
legend{font-weight:bold;color:#15428b}fieldset{border:1px solid #bbb}</style></head><body>
$(/opt/sbin/diskstatsd)
<fieldset><legend title="/opt/sbin/diskstats hd[abcd];/opt/sbin/smartctl -d marvell -A /dev/hd[abcd]">Average Temperatures</legend>
<div style="font:11px monospace;position:absolute;top:30px;left:34px;z-index:5">
<span style="color:#333333">?</span>
hda Temperatur $(</var/log/hdastats tail -1|awk '{print $5}')°C 
<span style="color:#333333">?</span>
hdb Temperatur $(</var/log/hdbstats tail -1|awk '{print $5}')°C 
<span style="color:#333333">?</span>
hdc Temperatur $(</var/log/hdcstats tail -1|awk '{print $5}')°C 
<span style="color:#333333">?</span>
hdd Temperatur $(</var/log/hddstats tail -1|awk '{print $5}')°C
</div>

<div style="padding-top:150px;line-height:10px">
<pre>
     Aver.    Mini    Maxi  Lifetime    Hibernate  Power on/off  Reallocated

hda $(/opt/sbin/diskstats hda|awk '{printf("%s",$1)}';/opt/sbin/smartctl -d marvell -A /dev/hda | awk '/^194/{t1=$10}/^190/{t6=substr($13,1,2),t7=substr($13,4,2)}
/^  9/{t2=$10}/^  4/{t3=$10}/^ 12/{t4=$10}/^  5/{t5=$10}
END{printf("  %2d.0°C  %2d.0°C %7d h %5d cycles %6d cycles %4d sectors\n",t6,t7,t2,t3-t4,t4,t5)}')
hdb $(/opt/sbin/diskstats hdb|awk '{printf("%s",$1)}';/opt/sbin/smartctl -d marvell -A /dev/hdb | awk '/^194/{t1=$10}/^190/{t6=substr($13,1,2),t7=substr($13,4,2)}
/^  9/{t2=$10}/^  4/{t3=$10}/^ 12/{t4=$10}/^  5/{t5=$10}
END{printf("  %2d.0°C  %2d.0°C %7d h %5d cycles %6d cycles %4d sectors\n",t6,t7,t2,t3-t4,t4,t5)}')
hdc $(/opt/sbin/diskstats hdc|awk '{printf("%s",$1)}';/opt/sbin/smartctl -d marvell -A /dev/hdc | awk '/^194/{t1=$10}/^190/{t6=substr($13,1,2),t7=substr($13,4,2)}
/^  9/{t2=$10}/^  4/{t3=$10}/^ 12/{t4=$10}/^  5/{t5=$10}
END{printf("  %2d.0°C  %2d.0°C %7d h %5d cycles %6d cycles %4d sectors\n",t6,t7,t2,t3-t4,t4,t5)}')
hdd $(/opt/sbin/diskstats hdd|awk '{printf("%s",$1)}';/opt/sbin/smartctl -d marvell -A /dev/hdd | awk '/^194/{t1=$10}/^190/{t6=substr($13,1,2),t7=substr($13,4,2)}
/^  9/{t2=$10}/^  4/{t3=$10}/^ 12/{t4=$10}/^  5/{t5=$10}
END{printf("  %2d.0°C  %2d.0°C %7d h %5d cycles %6d cycles %4d sectors\n",t6,t7,t2,t3-t4,t4,t5)}')
EOT
year=$(date "+%Y")
month=$(date "+%m")
day=$(date "+%d"); day1=$(expr $day - 1); day1=$(printf %02d $day1);
hour=$(date "+%H"); hour1=$(expr $hour + 1);
T1="";T2="";T3="";T4="";L="";
G=`date -d"$month${day1}0000$year" "+%m %d "`;for t in $(seq $hour1 23);do 
t=$(printf %02d $t);GET=$G$t;if [ "$L" == "" ] ;then L=$t; else L=$L'|'$t; fi


T=$(/opt/sbin/diskstats hda); if [ "$T" == "" ] ;then S=0; else S=`echo $T|sed 's/\(..\).\(.\).*/\1\2/'`; fi
if [ "$T1" == "" ] ;then T1=$S; else T1=$T1,$S; fi 

echo -e "$t: \c";

if [ "$T" != "" ] ;then echo -e "$T\c"; else echo -e "n/a\c"; fi; echo


T=$(/opt/sbin/diskstats hdb); if [ "$T" == "" ] ;then S=0; else S=`echo $T|sed 's/\(..\).\(.\).*/\1\2/'`; fi
if [ "$T2" == "" ] ;then T2=$S; else T2=$T2,$S; fi

echo -e "$t: \c";

if [ "$T" != "" ] ;then echo -e "$T\c"; else echo -e "n/a\c"; fi; echo

T=$(/opt/sbin/diskstats hdc); if [ "$T" == "" ] ;then S=0; else S=`echo $T|sed 's/\(..\).\(.\).*/\1\2/'`; fi
if [ "$T3" == "" ] ;then T3=$S; else T3=$T3,$S; fi

echo -e "$t: \c";

if [ "$T" != "" ] ;then echo -e "$T\c"; else echo -e "n/a\c"; fi; echo

T=$(/opt/sbin/diskstats hdd); if [ "$T" == "" ] ;then S=0; else S=`echo $T|sed 's/\(..\).\(.\).*/\1\2/'`; fi
if [ "$T4" == "" ] ;then T4=$S; else T4=$T4,$S; fi


if [ "$T" != "" ] ;then echo -e "$T\c"; else echo -e "n/a\c"; fi; echo

done

G=`date "+%m %d "`;for t in $(seq 00 $hour);do 
t=$(printf %02d $t);GET=$G$t;if [ "$L" == "" ] ;then L=$t; else L=$L'|'$t; fi

T=$(/opt/sbin/diskstats hda); if [ "$T" == "" ] ;then S=0; else S=`echo $T|sed 's/\(..\).\(.\).*/\1\2/'`; fi 
if [ "$T1" == "" ] ;then T1=$S; else T1=$T1,$S; fi

echo -e "$t: \c";if [ "$T" != "" ] ;then echo -e "$T\c"; else echo -e "n/a\c"; fi; echo

T=$(/opt/sbin/diskstats hdb); if [ "$T" == "" ] ;then S=0; else S=`echo $T|sed 's/\(..\).\(.\).*/\1\2/'`; fi
if [ "$T2" == "" ] ;then T2=$S; else T2=$T2,$S; fi

echo -e "$t: \c";if [ "$T" != "" ] ;then echo -e "$T\c"; else echo -e "n/a\c"; fi; echo

T=$(/opt/sbin/diskstats hdc); if [ "$T" == "" ] ;then S=0; else S=`echo $T|sed 's/\(..\).\(.\).*/\1\2/'`; fi
if [ "$T3" == "" ] ;then T3=$S; else T3=$T3,$S; fi

echo -e "$t: \c";if [ "$T" != "" ] ;then echo -e "$T\c"; else echo -e "n/a\c"; fi; echo

T=$(/opt/sbin/diskstats hdd); if [ "$T" == "" ] ;then S=0; else S=`echo $T|sed 's/\(..\).\(.\).*/\1\2/'`; fi
if [ "$T4" == "" ] ;then T4=$S; else T4=$T4,$S; fi



if [ "$T" != "" ] ;then echo -e "    $T\c"; else echo -e "    n/a\c"; fi; echo



done
cat <<EOT
</pre>
</div>
<img style="position:absolute;top:20px;margin-left:-2px"
src="http://chart.apis.google.com/chart?cht=bvg&chds=200,500&&chbh=11,0,0
&chf=c,lg,90,dd0000,1,ffff77,0|bg,s,efefef00&chg=8.33,33.33&chco=333333,666666&chs=680x150
&chxt=x,r&chxl=0:|$L|1:|20|30|40|50
&chd=t:$T1|$T2"></fieldset><br/>
EOT
for d in $(ls /dev/hd[abcd]); do
cat <<EOT
<fieldset><legend title="/opt/sbin/smartctl -d marvell -iAH $d">$d</legend>
<pre>$(/opt/sbin/smartctl -d marvell -iAH $d|sed '1,3d')</pre></fieldset><br/>
EOT
done
cat <<EOT
</body></html>
EOT

Besten Dank
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Die Temperaturen werden von diesem Skript gesammelt: /usr/local/sbin/diskstatsd. Das musste auch noch um die 3. und 4. Platte erweitern.

Itari
 

-007-ß

Benutzer
Mitglied seit
27. Apr 2009
Beiträge
103
Punkte für Reaktionen
0
Punkte
0
Mal eine andere Frage: Wie bringe ich eigentlich den user-apache dazu, dass er cgi's ausführt?
 

Blade26

Benutzer
Mitglied seit
30. Nov 2008
Beiträge
37
Punkte für Reaktionen
0
Punkte
0
Indem du
Rich (BBCode):
<Directory "/var/services/web">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options MultiViews +ExecCGI

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride All

    #
    # Controls who can get stuff from this server.
    #
    Order allow,deny
    Allow from all
    
</Directory>
hinzufügst.
 

-007-ß

Benutzer
Mitglied seit
27. Apr 2009
Beiträge
103
Punkte für Reaktionen
0
Punkte
0
Es läuft!!!
Danke
 

djinibaby

Benutzer
Mitglied seit
31. Jan 2009
Beiträge
71
Punkte für Reaktionen
0
Punkte
6
Die Temperaturen werden von diesem Skript gesammelt: /usr/local/sbin/diskstatsd. Das musste auch noch um die 3. und 4. Platte erweitern.

Itari

Hi, das habe ich gemacht und die Werte werden nun angezeigt.

Jetzt fehlen leider noch immer die Balken in der Grafik :-(

Danke schon mal
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat