Das CGI-Skript auf meinem Server, das Ausgaben für ein Ajax-JS erledigt. Sollte ich in nächster Zeit mal wenigstens auf Perl oder ähnlich portieren, weil die Performance wirklich unterirdisch ist (≈250 ms, wovon allerdings ein Großteil auf boinccmd entfällt). :>
Code
#!/bin/dash
PARENT=$(ps h -p $PPID -o command)
# wenn wir von nojs.sh aufgerufen werden, wollen wir diesen Header nicht noch mal mitten in der Ausgabe
if test ${PARENT%% /*} != /bin/dash; then
echo "Content-Type: text/html; charset=UTF-8"
echo
fi
unset PARENT
echo "<h2>Thermische Informationen</h2>"
echo "<p><em>Anmerkung:</em> <code>fan1</code> bezeichnet den Gehäuse-, <code>fan2</code> den CPU-Lüfter.</p>"
echo -n "<pre>"
sensors | grep -e ^fan[12] -e '^[CM].. ' | tr "+." " ," | sed -e 's/\(.*RPM\) .*$/\1/'
echo "</pre>"
echo "<h2>BOINC</h2>"
TEMPFILE=$(mktemp)
boinccmd --get_simple_gui_info 2>/dev/null >$TEMPFILE
if test -s $TEMPFILE; then
LINE=$(grep -nE '^={8} Results' $TEMPFILE | cut -d: -f1); LINE=$((LINE+1))
tail -n +$LINE $TEMPFILE | grep -e ^[0-9]*\) -e '^\s*report' -e '^\s*ready to report' \
-e '^\s*current CPU time:' -e '^\s*fraction done:' -e '^\s*estimated CPU time' | \
sed 's/^\([0-9]\)*).*$/<\/pre>\n<h3>Aufgabe \1<\/h3>\n<pre>/;s/^\s*//' | \
tail -n +2 # um das <pre></pre> vor der ersten Aufgabe zu unterdrücken
echo "</pre>"
else
echo "<p>BOINC läuft gerade nicht.</p>"
fi
rm -f $TEMPFILE
unset TEMPFILE LINE
Alles anzeigen
Ich nehm im Übrigen in diesem Fall (da)sh einerseits aus Performance-Gründen und andererseits, um mal bewusst auf Bashims zu vermeiden und bourne-kompatibel zu bleiben.