Drucker mit MRTG überwachen

Das Programm MRTG von Tobias Oetiker ist inzwischen ja schon sehr bekannt. Es eignet sich perfekt um Router per SNMP zu überwachen. Allerdings kann man damit auch Drucker, die SNMP unterstützen überwachen.
Im Geschäft habe ich nun einen Linux Server mit Ubuntu 6.06 und mit diesem möchte ich auch die Netzwerk-Auslastung unserer Drucker Monitoren. An diesem Beispiel zeige ich die Installation von MRTG und die Konfiguration für einen HP Laserjet 2500. Allerdings gibt es keinen (grossen) unterschied vom Laserjet 2500 zu anderen Druckern. Solange diese SNMP unterstützen.

Installation

Mit apt-get habe ich MRTG nicht gefunden. Also habe ich das DEB File heruntergeladen und installiert.
dpkg --install mrtg_2.12.2-1_i386.deb

Mit dem folgenden Befehl habe ich noch die zusätzlich benötigte Software installiert
apt-get -f install

Nun sollte MRTG Installiert sein.

Konfiguration

MRTG wird nicht über eine zentrale Konfigurationsdatei verwaltet. Man kann pro Gerät eine eigene Datei erstellen und diese dann als Parameter angeben. Die Konfigurationsdateien kann man mit dem Befehl cfgmaker erstellen. Als Parameter gibt man die IP Adresse des Gerätes an. Natürlich kann man noch zusätzliche Parameter angeben, aber die Standardvorgaben sind eigentlich ganz gut.
cfgmaker *.*.*.230 > /root/scripts/mrtg/lj2500.jpg

Ich lege die Konfigurationsdatei im Ordner /root/scripts/mrtg/. Dort kann ich auch noch andere Konfigurationsdateien ablegen. Die soeben erstelle Konfigurationsdatei sieht nun so aus. (Die auskommentierten Dateien habe ich entfernt)
cat /root/scripts/mrtg/lj2500.cfg
#  for Debian
WorkDir: /var/www/mrtg
EnableIPv6: no

Target[*.*.*.230_1]: 1:public@*.*.*.230:
SetEnv[*.*.*.230_1]: MRTG_INT_IP="*.*.*.230" MRTG_INT_DESCR=""
MaxBytes[*.*.*.230_1]: 1250000
Title[*.*.*.230_1]: Traffic Analysis for 1 -- NPI821398
PageTop[*.*.*.230_1]: <h1>Traffic Analysis for 1 -- NPI821398</h1>
                <div id="sysdetails">
                        <table>
                                <tr>
                                        <td>System:</td>
                                        <td>NPI821398 in </td>
                                </tr>
                                <tr>
                                        <td>Maintainer:</td>
                                        <td></td>
                                </tr>
                                <tr>
                                        <td>Description:</td>
                                        <td>  </td>
                                </tr>
                                <tr>
                                        <td>ifType:</td>
                                        <td>ethernetCsmacd (6)</td>
                                </tr>
                                <tr>
                                        <td>ifName:</td>
                                        <td></td>
                                </tr>
                                <tr>
                                        <td>Max Speed:</td>
                                        <td>1250.0 kBytes/s</td>
                                </tr>

                                <tr>
                                        <td>Ip:</td>
                                        <td>*.*.*.230 ()</td>
                                </tr>

                        </table>
                </div>

Damit die neuen Daten auf der rechten Seite der Grafik angezeigt werden füge ich die folgende Zeile oben in die Konfigurationsdatei ein.
Options[_]: growright

Da ich schlussendlich mehrere Drucker überwachen will, erstelle ich ein kleines Script, dass den MRTG aufruft. Dort kann ich dann auch noch zusätzliche Zeilen einfügen
cat /root/scripts/mrtg/update.sh
#!/bin/bash
env LANG=C mrtg /root/scripts/mrtg/lj2500.cfg -logging /var/log/mrtg/lj2500.log

Damit man das Script nun auch ausführen kann, muss man die Benutzerrechte noch ändern.
chmod 755 /root/scripts/mrtg/update.sh


Nun ja. Dann wollen wir mal sehen, ob alles funktioniert.
/root/scripts/mrtg/update.sh

Bei den ersten beiden Malen kam bei mir eine Fehlermeldung. Beim dritten mal war aber alles OK.

Jetzt das Script noch in den Cron installieren. Es reicht, wenn das Script alle 10 Minuten ausgeführt wird.
# MRTG
*/10 * * * *    root    /root/scripts/mrtg/update.sh

Jetzt sind die Dateien im Ordner /var/www/mrtg/ gespeichert. Da auf meinem Server noch ein Webserver läuft, kann man die Dateien über den Browser ansehen. Das sollte etwa so aussehen:
http://images.t-error.ch/news/321/mrtg.png

Auf der MRTG Homepage steht auch, dass man die Daten vom MRTG als RRD speichern kann. Also sollte eine Auswertung mit dem RRDTool möglich sein. Mal sehen wie das funktioniert.



Bilder-/Trafficklau verhindern

Über Konnichi wa bin ich auf ein Thema gestossen, dass mich früher auch mal beschäftigte. Der Bilderklau.
Eigentlich gib es zwei Varianten von Bilderklau. Das Bild wird abgespeichert und auf dem eigenen Server gehostet oder das Bild wir einfach verlinkt. Die zweite Varianten nennt man auch Traffic-Klau und darauf möchte ich nun genauer eingehen.

Zum einen gibts da die Möglichkeit, die Bilder einfach umzubenennen und/oder einfach ein anderes Bild an der Stelle platzieren. Diese Variante ist einfach, bringt langfristig aber wenig, da man einfach auf das neue Bilder verlinken kann.

Eine andere Methode habe ich bei Webmaster Resource gefunden. Dort wird das Bild mit PHP in mehrere Stücke zerlegt und dann mit einer Tabelle angezeigt. Für einen Anfänger wird es so schwieriger, da er nicht einfach auf das Bild linken kann, sondern den ganzen Code kopieren muss. Für einen erfahrenen Webdesign allerdings kein Problem.

Eine auch schon sehr bekannte Variante ist die folgende. Man macht eine Tabelle, definiert das zu schützende Bild als Hintergrund und legt ein transparentes Bild davor. Wie schon die Variante davor, nützt das nichts gegen erfahrene Webdesigner. Ein Beispielcode sieht so aus:
<table background="img/bild.jpg">
  <tr>
    <td>
      <img src="img/transparentes_bild.gif" width="200" height="150" alt="" />
    </td>
  </tr>
</table>


Eine effektivere Methode ist htaccess. Damit wird der Referer, also die Seite von der der Besucher kommt, abgefragt. Wenn der Referer nicht die eigene Seite ist, wird ein anderes Bild angezeigt. Einfach und effektiv, funktioniert aber leider nur mit Apache und mod_rewrite.
RewriteEngine OnRewriteCond %{HTTP_REFERER} !^http://.*webseite\.ch/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://.*webseite\.ch*$ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule ^(.*)jpg$ http://www.webseite.ch/images/bilderklau.jpg [L,R]


Fazit:
Wirklich verhindern, kann man den Bilderklau nicht. Allerdings kann man mit wenig Aufwand zumindest den Trafficklau vermindern.