#!/bin/sh
#
# Name:  du2html
# Autor: Tobias Gruetzmacher
# Datum: 24.11.1999
#
# Dieses Shell-Skript wandelt die Ausgabe von DU (Festplattenbelegung) in eine
# HTML-Datei um.
#
# Dieser Skript verrichtet seinen Dienst besonders gut als cron-Job von root.
# Mein Rezept: 1x täglich ;-)

# NACHFOLGENDES BITTE ANPASSEN!!!

# Das Verzeichnis, in dem du ausgeführt werden soll (ohne / am Ende)
# Normalerweise "/home"
verz="/home"
# Eine möglichst aktuelle Passwort-Datei (/etc/passwd ist gut, wenn man die
# Rechte dazu hat)
passfile="/etc/passwd"
# Ausgabedatei (Am besten im Verzeichnis des WWW-Servers)
outfile="/usr/local/httpd/htdocs/du.htm"

# STOPP !!!

# Programmkopf schreiben
echo "Ermittele Plattenbelegung...";
echo "Bitte warten...";


# HTML-Kopf schreiben
cat >$outfile <<ENDE
<html><head><title>Plattenbelegung</title></head><body>
<h1 align=center>Plattenbelegung der Home-Directories</h1>
<table border=1>
<tr><th>Benutzername</th><th>belegt (in KB)</th><th>Ganzer Name</th><th>Home-Verzeichnis</th></tr>
ENDE

# Plattenbelegung ermitteln und zu vollem Pfad ergänzen
cd $verz
du | awk -F"/" '$3==""' | awk -F"." 'BEGIN {OFS=""} \
     { printf("%8d %s",$1,"'$verz'"); \
	   printf("%s",$2); \
	   for (i=3; i<=NF; i++) printf(".%s",$i); \
	   printf("\n") }' > dulist

# Nach Plattenbelegung sortieren
sort -r dulist > dulist2
mv dulist2 dulist
touch dulist2

# Daten zu Benutzern aus der Passwort-Datei holen	  
for userdir in `awk '{ print $2 }' dulist`
do
  userspace=`awk '$2=="'$userdir'" { print $1 }' dulist`
  awk -F":" 'BEGIN { found=0; OFS=":" } \
    $6=="'$userdir'" { print $1,$5,$6,"'$userspace'"; found=1 } \
    END { if (found==0) print "-","-","'$userdir'","'$userspace'"}' \
	$passfile >>dulist2
done

mv dulist2 dulist
# dulist hat jetzt folgenden Aufbau: Username:Fullname:Home:PlatzBelegt

# In HTML umwandeln
awk -F":" 'BEGIN { OFS="" } \
  { print "<tr><td>",$1,"</td><td>",$4,"</td><td>",\
  $2,"</td><td>",$3,"</td></tr>" }' dulist >>$outfile

# HTML-Fuß schreiben
cat >>$outfile <<ENDE
</table>
<hr>
&copy; Tobias Gruetzmacher 1999
<br>Last updated: `date`
</body></html>
ENDE

# Ausgabedatei fuer alle lesbar machen
chmod a+r $outfile

# Liste löschen
rm $verz/dulist

echo "Fertig!"
