Im Gegensatz zu kommerziell erhältlichen Werkzeugen haben wir in unseren Arbeiten [3] einen Top-Down-Ansatz verfolgt, der das typische Aufgabenspektrum eines UNIX-Systemadministrators abdeckt. Es wurden daher Möglichkeiten für das Einrichten und Löschen von Benutzerkennungen und -gruppen sowie deren Quoten für den Zugriff auf Betriebsmittel (Plattenplatz, Druckseiten) ebenso vorgesehen, wie Funktionen zum Erfassen und ggf. Stoppen der momentan aktiven Prozesse oder zum Mounten/Unmounten von Dateisystemen. Es ist somit nicht nur passives Monitoring von UNIX-Workstations möglich, sondern auch das aktive Eingreifen in den Betrieb des Systems. Als Managementprotokoll wird SNMP in der Version 2 verwendet.
Im Rahmen dieser Arbeiten wurde eine Systemmanagement-MIB entwickelt und der dazugehörige Agent auf verschiedenen Betriebssystemplattformen (IBM AIX, HP-UX, SunOS, Solaris) implementiert. Diese MIB ist in Abbildung 2 schematisch dargestellt; sie umfaßt 195 MIB-Variablen und 15 Tabellen und stellt (unter anderem) ein Modell folgender Komponenten eines UNIX-Systems zur Verfügung:
Im Falle der Benutzer- und Gruppenverwaltung tritt jedoch durch eine Einschränkung des Internet-Informationsmodells unweigerlich folgendes Problem auf: in der Regel sind auf einem UNIX-System mehrere Benutzer eingetragen, die ihrerseits wieder zu mehreren Gruppen gehören. Tabellen innerhalb von Tabellen sind jedoch explizit durch den entsprechenden Internet-Standard [1] untersagt. ,,Zu den Internet-Standards konforme`` Managementsysteme akzeptieren jedoch MIBs, die diese Anomalie aufweisen, klaglos.
Als sehr vorteilhaft für die Kapselung des SNMP-Agentencodes hat sich der modulare Aufbau des SNMP-Agenten erwiesen: Zum Zugriff auf die MIB-Variablen wurde jeweils eine Prozedur verwendet. Dies bedeutet, daß jede MIB-Variable in einem eigenen Modul implementiert worden ist und über eine bzw. zwei Schnittstellen verfügt, je nachdem, ob auf die Variable nur lesend oder auch schreibend zugegriffen werden kann. Die ausschließlich lesbare MIB-Variable sysName wird durch Aufruf der Prozedur get_sysName ermittelt; eine schreib- und lesbare Variable wie sysLocation wird durch die Prozeduren get_sysLocation und set_sysLocation implementiert. Der SNMP-Agent besteht daher insgesamt aus 195 get- und 150 set-Prozeduren. Der ursprüngliche Grund für diese Modularisierung lag in der besseren Erreichbarkeit von Plattformunabhängigkeit, da man zwischen Betriebssystem-spezifischen Systemaufrufen und Aufrufen, die für alle unterstützten Betriebssysteme identisch sind, besser unterscheiden konnte.