Stand: 21.12.2000

OSSOS - Netzwerk-Hilfen

Zentrale Information beim Login

Labs/Willmann


Zur OSSOS - Homepage

Dieser Text beschreibt die Erweiterung der Syntax von BOOTCONF.SYS (oder einer anderen Datei) aus der mit dem Programm LOGINFO Informationen während des Login-Prozesses oder auch vor oder nach des Login-Prozesses als Umgebungsvariable gespeichert werden. Diese Informationen stehen anschließend für vielfältige Aufgaben zur Verfügung.
(Alles ohne jegliche Gewähr!)
Schulen dürfen dieses Verfahren inclusive des Programms LOGINFO.EXE kostenlos verwenden.

ACHTUNG: Lesen Sie den folgenden Text komplett, bevor Sie diese Strategie anwenden !


LOGINFO.EXE (Version 1.5)

Das Problem: Oft ist es nötig, gewisse Steuerungen im Netzwerk von der Knotenadresse (MAC-Adresse) einer bestimmten Arbeitsstation abhängig zu machen. Beispiele hierfür sind:

Derartige Aufgaben werden meist mit verschiedenen Batchjobs oder auch teils in Login-Scripten erledigt. Dazu war es bisher nötig, jeweils eine längere Liste von Knotenadressen zu betrachten und je nach Adresse bestimmte Aktionen auszulösen. Z.B:

in einem Login-Script:

IF P_STATION="00001B0350F5" THEN MAP U:=USR:WUSER\WDX1
IF P_STATION="00001B3F944A" THEN MAP U:=USR:WUSER\WDX5
....

in einem Batch-Job:

if "%pstation%"=="00001B0350F5" nprinter inf 0 
if "%pstation%"=="00001B033454" nprinter inf 1 
...
  

Der schwerwiegende Nachteil dabei war, daß überall die Knotenadressen standen, so dass bei einem Netzkartenwechsel alle Scripten und Batch-Jobs geändert werden mußten !!!

Die Lösung: (Stichwort: Single point of administration)

Viel besser wäre es jedoch, wenn obige Anweisung z.B. vom Rechnernamen oder vom Raum, usw... abhängig wären. Z.B. in folgender Form:

in einem Login-Script:

  REM Mapping mit Hilfe von Environment-Variablen
MAP INS S6:=USR:WUSER\%<COMPUTER>

in einem Batch-Job:

  if not "%computer%"=="C1-1" nprinter inf 0

Aber wie kommen die nötigen Angaben in das Environment ? Und wo kommen sie überhaupt her ?

Dazu haben wir die Syntax der BOOTCONF.SYS folgendermaßen erweitert:

Hinter dem Namen des Bootimage-Files folgt ein Leerzeichen und dann ein Semikolon. Dahinter folgen nun spezielle Eintragungen, die gar nicht oder teilweise oder vollständig vorhanden sein dürfen. Kommentare sind ebenfalls erlaubt. Das Format sieht also so aus:

Netz-Segment, Knotenadresse ; R=Raum, P=Nummer, Q=Schlange, N=Name, I=ip, E=text {Rest egal}
z.B.:

0x2,00001B3B8561=BOOT.SYS ; R=C1, P=2, Q=laser,r N=C1-05, I=192.168.159.25, F=IMG.GHO, E=beliebig

Dabei bedeutet:

(Bem: Wer noch keine festplattenlosen Arbeitsstationen über das Netz gebootet hat, kennt die BOOTCONF.SYS vielleicht gar nicht. Lesen Sie im Novell-Netware-Handbuch nach. In dieser Datei steht zeilenweise für jeden fernzubootenden Rechner die Netzadresse, die Knotenadresse und der Name des Bootimage-Files, z.B:

0x2,00001B3B8561=BOOT.SYS
0x1,00001B3B8345=BOOT1.SYS

...

Eintragungen am Ende jeder solchen Zeile werden beim Booten nicht wahrgenommen. Dort können also z.B. Kommentare stehen, wie oben in der 2. Zeile angedeutet.)

Tragen Sie also für jede Arbeitsstation die entsprechenden Daten pro Zeile ein. Benutzen Sie dazu die Datei BOOTCONF.SYS. Arbeitsstationen, die gar nicht fernbooten, erhalten einen Bootimage-Filenamen, den es gar nicht gibt, z.B:

0x2,00001B3B8561=DUMMY.SYS

Sie dürfen auch eine andere Datei statt BOOTCONF.SYS anlegen.

Das Programm LOGINFO

Alle Aufgaben, die LOGINFO erledigt, hängen von der Knotenadresse (der sogenannten MAC-Adresse) der gerade benutzten Arbeitsstation ab. Also muss folglich LOGINFO diese MAC-Adresse kennen. Dafür stehen zwei Möglichleiten zur Verfügung.

  1. Sie benutzen LOGINFO mit der Option /mac oder /macenv.
    In diesem Fall liest LOGINFO die MAC-Adresse direkt über den Novell-Client (der natürlich vor dem Aufruf von LOGINFO geladen sein muss).
    (/mac liesst nur die MAC-Adresse, /macenv schreibt sie ausserdem noch ins Environment.)
  2. In Ihrem Login-Script müssen Sie die Knotenadresse ins Environment kopiert haben. Dies geschieht mit der Zeile:

         SET PSTATION="%P_STATION"

    Ohne die Optionen /mac oder /macenv benötigt LOGINFO diese Environment-Variable !

LOGINFO läßt sich auf verschiedene Weisen verwenden:

In jedem Fall geht es letztlich um das Setzen der Environment-Variablen:

Die genaue Syntax ist:

Aufruf: loginfo {optionen} (dann wird F:\LOGIN\BOOTCONF.SYS benutzt)
        loginfo pfad\datei {opt} (dann wird die spezifizierte Datei benutzt)
        loginfo ... $pfad{datei} (Batchjob wird erzeugt)
        loginfo ... !pfad{Datei} (Loginscript wird erzeugt)
        Optionen:
           /w  Wartet nach Programmausfhrung,
               bis ENTER-TASTE gedrckt wird.
           /d  Zeige Ergebnisse auf Bildschirm (Debug).
               (Ev. /W einschalten).
           /g  Zeigt alle Meldungen in deutsch.
           /mac Benutze MAC-Adresse statt PSTATION. (Ein Novell-Client
           /macenv MAC-Adresse ins Environment.      muss geladen sein)
           /nofile Werte keine BOOTCONF-Datei aus.
            (Kombiniere zB. mit macenv)

Output: die genannten Environment-Variablen und
        als DOSExitCode:
        0 erfolgreich
        >=1 Fehler: 1 : PSP von COMMAND nicht gefunden
        2 : Kennung 4Dh nicht gefunden
        3 : Master-Environment nicht gefunden
        4 : Master-Environment ist voll
        5 : Environment nicht gesetzt
        6 : unbekannte /Option
        7 : / vor Option fehlt
        8 : Bootconf-Datei nicht gefunden

Das Programm LOGINFO liest die Environment-Variable PSTATION oder benutzt direkt die MAC-Adresse und sucht dann in der BOOTCONF.SYS oder auf Wunsch auch aus einer anderen Datei den gleichen Wert und gibt die gewünschten Informationen als Environment-Variablen im Masterenvironment zurück.
(Als Spezialfall kann das Lesen der bootconf auch entfallen.)

ODER

erzeugt eine Batchdatei/Loginscript, die diese Environment-Variablen erzeugt:

Environment                               Datei       x.bat  x=letzte 8 Zeichen
-----------                               ----------- von pstation z.B: 12345678.bat
ROOM        Raumbezeichnung               set ROOM= Raumbezeichnung
PRINTER     Druckernummer                 set PRINTER=Druckernummer
QUEUE       Druckerschlange               set QUEUE=Druckerschlange
COMPUTER    Computername                  set COMPUTER=Computername
IP          IP-Adresse                    set IP=IP-Adresse
FI          Festplatten-Image             set FI=Festplatten-Image
EXTRA       optional und frei verfuegbar  set EXTRA=Text

(PSTATION   MAC-Adresse                   set PSTATION=MAC-Adresse
 PSTATION8  MAC-Adr. auf 8 Stellen        set PSTATION8=gekürzte MAC-Adresse)
gekürzt.

x=letzte 8 Zeichen von pstation oder vorgegebener Name statt x.bat inclusive Pfad

(siehe auch PRINTNO.EXE/DOC und SetMEnv.EXE/DOC im Text printno.htm und setmenv.htm)

Starten Sie loginfo /h, erhalten Sie eine Hilfe, die alle Optionen erklärt. Mit loginfo /h /g erhalten Sie dies in deutsch.

Bemerkungen:

Sinn und Zweck:

Beim Login sollen in der Regel diverse Dinge gesetzt und ausgefuehrt werden. So kann LOGINFO in einem dem Loginscript nachgeschalteten Batch-Job aufgerufen werden. Die dabei gesetzten Environment-Variablen können dann noch im gleichen Batch-Job benutzt werden.

WARNUNG: Während des Loginscript kann (wohl?) nicht durch ein externes Programm das Master-Environment geändert werden.
Deshalb DARF LOGINFO NICHT dort einsetzt werden, ohne die !-Pfad\Datei-Option einzusetzen !
(Die !-Dateiangabe erzeugt ein neues LOGIN-Script nur mit SET- Parametern, dass gleich per Include aufgerufen werden kann. Damit laesst sich dann doch das Master-Environment setzen !)

Anwendungsbeispiele:

- Vieles ausserhalb vom Loginscript erledigen:
  -------------------------------------------
  Beenden Sie das (letzte) Loginscipt mit dem Aufruf einer Batch-Datei,
  z.B.:
  ...
  pccompatible
  exit "f:\login\start"

  Innerhalb von f:\login\start.bat benutzen Sie LOGINFO.

- Sie wollen waehrend des Login gewisse Verzeichnisse (z.B. fuer temporaere
  Windowsverzeichnisse) in Abhaengigkeit vom Computernamen mappen.

  Sagen wir die Computer heissen C-1, C-2,... und die Verzeichnisse
  g:\wuser\c-1, g:\wuser\c-2,...

  Setzen Sie dann z.B. im Start-Batch:

  MAP U:=USR:WUSER\%COMPUTER%

- Sie wollen in Abhaengigkeit von bestimmten Druckern, bestimmte
  Druckerschlangen setzen. Setzen Sie dazu in BOOTCONF.SYS den P-Wert
  jeweils auf eine Raumnummer.

  IF "%PRINTER%"=="1" F:\SYSALLE\CAPTURE Ti=1 NB NFF NT Q=necp7
  IF "%PRINTER%"=="2" F:\SYSALLE\CAPTURE Ti=1 NB NFF NT Q=laser1

  Oder sogar mit Hilfe des Q-Wertes:

  IF NOT "%QUEUE%"=="" F:\SYSALLE\CAPTURE Ti=1 NB NFF NT Q=%QUEUE%

Und hier kommt der Clou:
- Wenn Sie mit LOGINFO eine Batch-Datei erzeugen, so sollte das
  Verzeichnis, in dem Sie das tun, fuer den jeweiligen Benutzer
  Schreib- und Leserechte haben. Z.B.:

  loginfo $G:\ALLE

  Der Dateiname des erzeugten Batch-Jobs wird aus den letzen 8 Zeichen
  der Environment-Variablen PSTATION erzeugt. Wenn z.B.
  PSTATION=00001B3B8561 ist, und die BOOTCONF.SYS dazu die Zeile

  0x1,00001B3B8345=BOOT.SYS ; R=C1, Q=deskjet, P=1, I=192.168.159.22

  enthaelt, so wird 1B3B8345.BAT erzeugt. Der Inhalt koennte etwa so
  aussehen:

  @ECHO OFF
  REM Von LOGINFO.EXE automatisch erzeugte Batch-Datei

  SET ROOM=C1
  SET PRINTER=1
  SET QUEUE=deskjet
  SET COMPUTER=
  SET IP=192.168.159.22
  SET FI=IMG.GHO
  SET EXTRA=

  Diesen Batchjob koennen Sie in der Datei START.BAT verwenden. Dazu
  sollten Sie allerdings zuvor im Login-Script die Environment-
  Variable PSTATION8 erzeugen, die die letzten 8 Zeichen von PSTATION
  enthaelt:

  SET PSTATION8="%PSTATION" <<4 (im Login-Script !)
(es geht wirklich so !!!) (Alternativ erzeugt auch die Option /macenv die Environment-Variablen PSTATION und PSTATION8.) In START.BAT rufen Sie dann den von LOGINFO erzeugten Batchjob folgendermassen auf: IF exist %PSTATION8%.BAT %PSTATION8%.BAT Danach sind die Environment-Variablen gesetzt, und Sie koennen diese wie oben beschrieben auswerten. - Stichwort: SELBSTHEILENDE ARBEITSSTATIONEN Sie wollen mit einem Festplatten-Image-Programm (Ghost, DriveImage,...) automatisch ueber Fernbooten eine Arbeitsstation restaurieren (clonen). Lassen Sie am Ende des Fernbootens zu einer Batch-Datei, z.B. f:\login\image.bat, verzweigen. Rufen Sie dort vor dem Aufruf vom Image-Programm dieses Programm loginfo auf. Jetzt steht Ihnen die Environment-Variable FI zur Verfuegung. Sie wissen also, welche Image-Datei fuer das Clonen verwendet werden soll. Fuer z.B. Ghost, wuerde jetzt der Aufruf so aussehen koennen: f:\ghost -clone,mode=load,src=f:\%fi%,dst=1 -sure TIP: Wenn man sich fuer das Restaurieren von Arbeitsstationen NICHT einloggen will, so kann LOGINFO die Arbeitsstationsadresse auch direkt lesen (Option /mac liesst direkt die MAC-Netzwerk- kartenadresse. Option /macenv tut dasselbe und setzt sie ausserdem als PSTATION ins Master-Enviroment.) Beispiele: loginfo /mac liest direkt die Kartenadresse und wertet BOOTCONF.SYS aus und setzt die dort gefundenen Werte ins Environment loginfo /macenv /nofile liest direkt die Kartenadresse und setzt sie ins Environment (PSTATION und PSTATION8) OHNE eine Bootconf.sys auszuwerten. Noch besser: - Vieles innerhalb vom Loginscript erledigen: ------------------------------------------- Rufen Sie LOGINFO innerhalb des Haupt-Loginscripts auf und lassen Sie sich ein Unter-Loginscript erzeugen, das anschliessend per INCLUDE aufgerufen wird und die Environment-Variablen setzt. Diese koennen groesstenteils auch innerhalb des Haupt-Loginscripts ausgewertet werden. z.B.: #f:\login\loginfo !G:\ALLE INCLUDE G:\ALLE\<PSTATION8>.SCT ... dann z.B.: MAP U:\SYS:WUSER\<COMPUTER> IF <QUEUE><>"" THEN CAPTURE Ti=1 NB NFF NT Q=<QUEUE> - Wollen Sie ein Login unter Windows-NT-4-Workstation machen, so koennen Sie auch eine fest benannte Unter-Loginscriptdatei auf die lokale Festplatte legen. Z.B.: IF "%OS"="WINNT" THEN BEGIN #f:\login\loginfo !D:\TEMP\NTLOGIN.SCT INCLUDE D:\TEMP\NTLOGIN.SCT END - TIP: Im Loginscript ist %OS eine Netware-Variable. In Batchfiles ist %OS% eine Environment-Variable. Unter Windows-NT ist im 1. Fall %OS=WINNT, im 2. Fall %OS%=Windows_NT

ACHTUNG: Einige Anwendungsbeispiele finden sich in:
Login-Skript Beispiel eines vollständigen Login-Skript mit vielen Tricks
START.BAT Beispiel einer Batchdatei, die nach einem Login-Skript ausgeführt werden könnte
STARTPRN.BAT Beispiel einer Steuerung von Druckern (Drucker starten: Drucken ist möglich)
STOPPRN.BAT Beispiel einer Steuerung von Druckern (Drucker stoppen: Drucken ist nicht möglich))
DELPRN.BAT Beispiel einer Steuerung von Druckern (Druckerschlangeninhalt löschen)

Wenn Sie das oben beschriebene Verfahren verstanden haben, sollten Sie sich noch zwei weitere Programme anschauen. PRINTNO, PQJOB und und SETMENV. Die ersten beiden lassen sich hervorragend für Druckersteuerungen einsetzen, so wie sie z.B. in den oben genannten Drucker-Batch-Jobs benutzt werden.

Die Programme LOGINFO, PRINTNO, PQJOB und SETMENV können Sie durch Anklicken herunterladen oder über die OSSOS-Homepage und dort Download..

(PRINTNO.EXE/DOC, PQJOB und SetMEnv.EXE/DOC im Text printno.htm, pqjob.htm und setmenv.htm)


Zurück zur OSSOS - Homepage