Anzeige der wichtigsten Systeminformationen im Disk Station Manager

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.
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
 
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... ;)
 
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
also ich werde aus dieser anleitung nicht schlau.

wie meint hier das mit chmod 755 auf info.cgi setzen??
 
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
 
super drago :)
 
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
 
Leider arbeitet dass Download nicht auf diese seite, bekomme eine Fehlermeldung.
 
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
 
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
 
Die Temperaturen werden von diesem Skript gesammelt: /usr/local/sbin/diskstatsd. Das musste auch noch um die 3. und 4. Platte erweitern.

Itari
 
Mal eine andere Frage: Wie bringe ich eigentlich den user-apache dazu, dass er cgi's ausführt?
 
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.
 
Es läuft!!!
Danke
 
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