Was kann man an dem einen Server einstellen, daß er nicht von
allen Workstations als Default Server benutzt wird ?
Wenn defaultmäßig dieser eine Server nicht der Login-Rechner
sein soll, hier erstmal
SET REPLY TO GET NEAREST SERVER = OFF
setzen. An den Arbeitsplätzen, die dann doch primär daran gehen sollen, würde ich dann in der NET.CFG ein
PREFERRED SERVER = <ServerName>
setzen, so sollte es laufen.
Gibt es eine Möglichkeit, mit der ich für einzelne User
bzw. Usergruppen die Trustees zeitgesteuert setzen kann?
z.B. für "SYS:SPIELE" Zugriff nur von 12.00 bis 13.00 h,
vorher kein Zugriff, später automatischer Rausschmiß.
Leg doch einfach einen User SPIELE an mit Time Restrictions von 12-13h,
unlimited Connections und Rechte auf SYS:SPIELE. Die User müssen sich
dann nur um 12h neu anmelden und werden automatisch gegen 13h rausgeworfen.
Der Supervisor (und SV-äquivalente User) kann damit allerdings nicht rausgeworfen werden. Beim Supervisor funktionieren keinerlei Account Beschränkungen und Station Restrictions.
Mit folgender Lösung kann man feststellen, wo jemand im Netzwerk angemeldet ist.
Man kann mit USERLIST feststellen, ob der Benutzer selbst angemeldet ist. Bei USERLIST /A bekommt man zusätzlich noch die Netzwerkadresse heraus. Dies kann man jetzt mit dem DOS Programmen FIND und einer Batchdatei kombinieren.
Ich habe alle Nodeadressen in einer Textdatei abgespeichert.
NODE.DAT Arbeitsplatz ABC 00005A12BE7F Arbeitsplatz DEF 00005A121234 .
Jetzt noch eine Batchdatei NODE.BAT
@echo off find "%1" NODE.DAT /i
Und schon bekommt man durch eintippen von
NODE 5A12BE7F
den entsprechenden Arbeitsplatz angezeigt.
Die automatische Zeitsynchronisation der DOS-Arbeitsplätze mit dem File Server kann man durch einen Eintrag in der NET.CFG ausschalten:
SET STATION TIME = OFF
Außerdem muß im Login Script ein SET_TIME OFF stehen, sonst wird die Uhrzeit beim Einloggen wieder auf die Serverzeit gesetzt! Das geht allerdings erst mit der LOGIN.EXE Version 3.70.
Beim Novell 32bit-Client für W95 muß man unter Start/ Einstellungen/ Systemsteuerung/ Netzwerk/ NovellNetwareClient32/ Eigenschaften/ ErweiterteEinstellungen/ SetStationTime umschalten.
Bei dem Original Microsoft Client gibt es scheinbar keine Einstellungsmöglichkeit.
Wenn man ab einer bestimmten Größe der Verschachtelung von Unterverzeichnissen nicht mehr auf die Files in diesen Unterverzeichnissen zugreifen kann, meldet u.a. auch PURGE an dieser Stelle "TOO DEEP IN TREE".
Um trotzdem auf diese Dateien und Unterverzeichnisse zugreifen zu können, reicht es aus, wenn man ein MAP ROOT irgendwo tiefer in den Tree setzt.
Unter Novell wird bei jeder Datei und jedem Directory der Owner, d.h. der Benutzer, der die Datei oder das Directory angelegt hat, mit abgespeichert. Wenn jetzt der Benutzer gelöscht wird, z.B. mit SYSCON, dann hat die Datei oder das Directory keinen Owner mehr. Im Regelfall gibt es keine Probleme, es gibt aber verschiedene Programme, vor allem Datenbanken, die dann nicht mehr (korrekt) funktionieren.
Die Owner-Informationen kann man manuell mit FILER ansehen und setzen. Mit diversen Tools kann man Dateien ohne Owner auch suchen und den Owner neu setzen lassen.
Bootrom einbauen und auf der Karte aktivieren.
Bootdiskette anlegen und gründlich austesten. Bei Einsatz von ODI muß noch rplodi nach lsl und vor dem Kartentreiber geladen werden.
Mit DOSGEN im Login Verzeichnis ein Bootimage von der Diskette anlegen
Je nach Bootrom-Version muß man bei Einsatz von DOS 5.0 oder höher RPLFIX über das Image laufen lassen.
Diese Vorgehensweise funktioniert nur bei identischen Rechnern, d.h. diese Imagedatei wird von allen Rechnern mit Bootprom gelesen.
Wer unterschiedliche Rechnerkonfigurationen laufen lassen will, sollte sich in den Novellunterlagen im CONCEPTS das Konzept der BOOTCONF.SYS anschauen.
Folgende Lösung ist noch flexibler, dafür auch etwas komplexer:
Ich schreibe einfach mal meine Configs dazu:
Verwendete Umgebung:
Server: | |
WS: | NE2000 mit Lanworks Bootrom. 386-25 bzw. 486-33, IBM-DOS 5.02 |
Datei sys:login\bootconf.sys:
0x00000002, 00001B0782E2 = MAILBOX.SYS 0x00000001, 00001B076BA4 = TOSSER.SYS ^Netzwerkadresse ^Karten-Knotenadresse
Das Bootimagefile heißt dementsprechend nicht net$dos.sys, sondern "mailbox.sys" und "tosser.sys".
Datei config.sys im Bootimage:
[...] device=emm386.exe noems i=e000-efff y=f:\dos\v5.02\emm386.exe shell=command.com /e:1024 /p
Wer Qemm verwendet und Windows 3.1x, der braucht ein /vxddir=f:\qemm oder wo auch immer qemm auf dem Netz installiert ist. Wer kein Windows 3.1x verwendet, kann sich sowohl das y=... als auch das vxddir=... schenken.
Datei autoexec.bat im Bootimage:
[...] lh lsl lh rplodi lh ne2000 lh ipxodi d bootbox
Datei bootbox.bat im Bootimage:
lh netx
(ja, nur diese eine Zeile. Die Zeile muß mit einem CR abgeschlossen sein)
Datei Bootbox.bat in sys:login:
::::::::(insgesamt ca. 70x, zum Überspringen der Kommandozeile im Batch des Bootimagefiles) prompt $p$g login mailbox
Systemloginscript:
[...] if P_STATION="00001B0782E2" then begin comspec = F:\DOS\%OS_VERSION\COMMAND.COM end
Das größte Problem gibt es immer nach dem Aufruf von NETX. Man muß sich immer vor Augen halten, daß die Batchdatei, aus der heraus das NETX aufgerufen wurde, sich auf dem emulierten Laufwerk A: befindet und nach dem Aufruf von NETX die Batchdatei mit demselben Namen im sys:login Verzeichnis weiter ausgeführt wird. Der nächste Befehl wird also an der Byteposition innerhalb der Batchdatei gelesen, an der der letzte Befehl auf Laufwerk A: stand. Aus diesem Grund habe ich am Anfang ein ":::[...]:::::::" in meine Batchdatei geschrieben, dann wird halt ein Kommentar bzw. Label ausgeführt, solange die Byteposition nicht größer als 70 oder 80 wird.
Was auf Laufwerk A: hinter dem Aufruf von NETX kommt, ist vollkommen irrelevant, und was auf Laufwerk sys:login vor dem Aufruf von NETX kommt, ist ebenfalls völlig irrelevant. Hauptsache es geht auf sys:login im Batch an einer vernünftigen Byteposition weiter, bzw. mit einem vernünftigen Befehl. Wichtig ist auch, daß nach dem Aufruf von netx auf dem A: Batchfile noch ein CR/LF kommt, sonst wird hier die Batchdatei schon beendet.
Wer das verstanden hat, schreibt einmal ein Bootimagefile und macht später in sys:login, was er will mit dem boxlogin.bat, aber das betreffende boxlogin.bat auf im Bootimage braucht überhaupt nicht mehr verändert zu werden.
Manche Bootroms wechseln das aktuelle Laufwerk nicht, da muß im sys:login\bootbox.bat noch zwingend ein F: hinter dem NETX Aufruf stehen. (Der Name 'bootbox.bat' ist natürlich auch frei gewählt)
Nützlich ist auch das Verwenden einer neuen NETX. Einige alte Versionen halten manchmal äußerst hartnäckig an einem "comspec=a:\command.com" fest, was über kurz oder lang zu Problemen führt. Die netx.com Version 3.26 (mitgeliefert z.B. auch bei Windows 3.1) sollte es mindestens sein. Was sich auch bewährt hat: Im Loginscript das Laufwerk a: einfach auf das DOS-Verzeichnis mappen: map root a:=sys:dos\%OS_VERSION
Eintrag im (System) Login Script:
if member of "OBSERVE" then #send "Achtung! User %LOGIN_NAME loggt sich gerade ein!" to xy end
Dazu braucht man nur noch die entsprechenden User in eine (speziell dafür erstellte) Gruppe OBSERVE einzutragen.
Bei einem einzelnen User reicht auch:
if login_name = "dau" then ....
Mit folgendem Befehl lassen sich alle Dateien eines Besitzers auf einem Volume anzeigen (für Netware 3.12):
ndir /fo /ow eq benutzername
Ndir ist der "Dir"-Befehl von Novell, der nur Dateien [/fo] des Benutzers benutzername [/ow eq (equals) benutzername] auflistet.
Evtl. empfiehlt sich noch " |more oder /c > Dateiname.txt" oder einer folgender Schalter:
/sort up | sortiert nach geändertem Datum |
/sub | alle Unterverzeichnisse |
/ac bef 1-1-95 | alle Dateien, welche seit dem 01.01.95 nicht mehr aufgerufen wurden |
/si gr 100000 ac bef 01-05-95 sort ow | sortiert die Ausgabe nach Benutzern, welche Dateien größer 100K besitzen, die sie aber seit dem 01.05.95 nicht mehr aufgerufen haben. |
Der Supervisor kann sich wieder einloggen, nachdem er durch aktiviertes "Intruder Detection" bei NW3.12 nach den angegebenen Eindringversuchen ausgesperrt wurde, indem er an der FileServer Console enable login eingibt. Dadurch wird der Supervisor- Account wieder entsperrt.
Das funktioniert aber nur mit der Freigabe des SUPERVISOR- Accounts, alle anderen Accounts können vom Supervisor selbst in SYSCON / User Information über den Intruder Lockout Status freigeschaltet werden.
Wie kann man nach dem Aufruf von Logout eine Batch oder ein anderes
Programm aufrufen?
LOGOUT.EXE überall umbenennen (z.B. in LOGOFF.EXE)
dann eine LOGOUT.BAT erstellen:
echo ciao und bis bald... dein server ... LOGOFF.EXE
Um einzelne oder alle Benutzer in einem Netware Netz für den Empfang von Netznachrichten komplett sperren, gibt es folgende Möglichkeiten:
"CASTOFF ALL" bei Netware 3.1x bzw. "SEND /A=N" bei Netware 4.x in den Loginscript schreiben. Das fängt fast alle Meldungen ab.
"message timeout = xxx" ins NET.CFG eintragen. Das läßt bei Benutzung der VLMs die Meldungen nach der eingestellten Zeit von selbst verschwinden.
Es ist übrigens nicht einstellbar, ob die Nachrichten von anderen Usern unter DOS am oberen oder unteren Bildschirmrand auftauchen. Das ist fest beim Client eingestellt: bei NETX in der letzten, bei den VLMs in der ersten Zeile.
In einer Novell Netzwerkumgebung kann im Prinzip jeder eingeloggte User mit Zugriff auf das Public-Verzeichnis (also normalerweise jeder) die System Configuration (Syscon) aufrufen, mit den Einschränkungen, daß wichtige Funktionen (User anlegen/löschen, Rechte vergeben etc.) dem Supervisor und Gleichberechtigten vorbehalten ist. Man kann also ein bißchen drin rumschnuppern, aber im Prinzip keinen Unsinn anstellen. Sollte es trotzdem gehen, sind bei der Einrichtung von Usern zu viele Rechte vergeben worden.
Man kann ein "Ablaufdatum" für einen einzelnen User eingeben:
SYSCON
User information
User aussuchen
Account Restrictions
expiration date: 30. November 1997
Dadurch wird der Account ab diesem Datum gesperrt.
Will man den Account sofort (evtl. für eine bestimmte Zeit) sperren, kann man statt dessen auch folgendes einstellen:
5a. Account disabled: YES
Mit MAP INS Sxx: kann man Such-Laufwerke mappen. (funktioniert nicht beim OS/2 Requester). Die Option "Sxx:" (xx für eine Zahl von 1 bis 16 in der Reihenfolge, in der dieses Verzeichnis im Pfad stehen soll) bedeutet dabei, daß Novell automatisch das nächste freie Netzlaufwerk (von Z: aufsteigend in Richtung A:) sucht und dieses für das Laufwerk-Mapping verwendet.
Dieser Buchstabe wird dann z.B. als "X:.;" an der Stelle "xx" in den Suchpfad der Arbeitsstation eingetragen.
Das optionale "INS" bedeutet, daß Pfade, die bereits an der Stelle "xx" stehen, nicht überschrieben werden, sondern um eine Stelle nach hinten geschoben werden.
Wenn man normale Netzlaufwerke mappen will, benutzt man
MAP lw:= oder MAP ROOT lw:=
wobei lw ein beliebiges (möglichst noch nicht benutztes) Laufwerk ist.
Diese Laufwerke werden nicht in den Pfad der Workstation aufgenommen.
wie sieht der Login Script aus, der abgearbeitet wird, wenn kein
System und User Login Script vorhanden ist?
Default Login Script der Netware 3.1x (fest codiert in der LOGIN.EXE):
WRITE "Good %GREETING_TIME, %LOGIN_NAME." MAP DISPLAY OFF MAP ERRORS OFF MAP *1:=SYS:; *1:=SYS:%LOGIN_NAME IF "%1"="SUPERVISOR" THEN MAP *1:=SYS:SYSTEM MAP INS S1:=SYS:PUBLIC; INS S2:=SYS:PUBLIC/%MACHINE/%OS/%OS_VERSION MAP DISPLAY ON MAP
Soll nur das Abarbeiten des Default Login Scripts vermieden werden (unter weiterer Beachtung vorhandener User Login Scripts), reicht ein NO_DEFAULT im System Login Script.
Ansonsten kann man den System Login Script mit EXIT ["programm"] beenden, dann wird weder der Default Login Script noch evtl. vorhandene User Login Scripts abgearbeitet.
Zwischen den Anführungszeichen dürfen max. 15 Zeichen stehen, der Platz, der in normalen PC's im Tastaturpuffer frei ist, denn dorthin wird das geschrieben. Wenn dann der folgende Fehler auftritt:
EXIT with "MENUE.BAT" does not run on this machine!
liegt das an einem anderen MACHINE NAME in der NET.CFG und
läßt sich ganz einfach mit dem Eintrag pccompatible im
Login Script wieder aktivieren.
Das ist eine Absicherung gegen nicht 100 % kompatible PCs, weil das EXIT
"....." direkt in den Tastaturpuffer schreibt!
User Login Script trotz einheitlichem EXIT "..."
mit der Zeile INCLUDE SYS:MAIL\%USER_ID\LOGIN kann man User Login
Scripts aus dem System Login Script heraus ausführen. INCLUDE ...
funktioniert auch mit jeder beliebigen ASCII-Datei, auf die aber Leserechte
bestehen müssen.
wie kann ich eine Batchdatei aus dem Systemlogin Script heraus
starten ?
#BEFEHL | für externe Kommandos |
#COMMAND.COM /C DEL C:\TEST.BAT | für interne Befehle und Batchdateien |
Man darf aber nie ein TSR in einem LOGIN Script starten, weil LOGIN.EXE noch läuft und den Script abarbeitet. Ein TSR legt sich darüber, der später freiwerdende Speicherplatz kann bis zum nächsten Booten nicht mehr belegt werden.
Ausnahme:
Mit #CAPTURE kann man ohne weiteres Druckumleitungen machen, weil CAPTURE nicht resident geladen wird, sondern lediglich bestimmte Flags in dem (bereits geladenen) Requester/Shell ändert.
Wie kann ich verhindern, daß beim Einloggen eines Users die
Laufwerkmappings angezeigt werden?
MAP DISPLAY OFF in den Login Script
Die Anzeige von MAP-Fehlern wird übrigens mit einem zusätzlichen MAP ERROR OFF ausgeschaltet.
DOS-Variablen im Login Script definieren
Man kann folgendes Konstrukt (besonders aufwendig bei vielen Benutzern)
stark vereinfachen:
IF P_STATION == "000024061371" SET ID = "24061371" END usw....
Das läßt sich mit einer einzigen Zeile für alle Stationen im Netz realisieren:
DOS SET ID=P_STATION << 4
und funktioniert übrigens auch umgekehrt:
DOS SET ID=P_STATION >> 6
ergibt ID=000024, macht aber hier keinen Sinn, da es damit zu gleichen Ziffern kommen kann. Aber diese beiden Optionen funktionieren bei allen DOS SET xx= Zuordnungen.
wie kann man beim Einloggen in Netware 3.1x den System Login Script
umgehen?
Mit Login /S kann man ein anderes Script ausführen lassen.
Man kann "." und ".." auf einem Netware Volume von einer DOS-Station aus sehen, wenn man in der NET.CFG folgendes einträgt:
Netware DOS Requester
Show Dots = On
VLM benutzt nicht den Eintrag "FILE HANDLES =" in der NET.CFG, sondern den Eintrag "FILES=" in der CONFIG.SYS. Dadurch wird dieser Wert von Netzwerk- und Nicht-Netzwerkanwendungen gemeinsam genutzt.
Unter NETx hatte man mit FILES=50 und FILE HANDLES = 150 50 DOS-Handles und 150 Netzwerk-Handles. Um dieselbe Anzahl Handles unter VLMs zu bekommen, muß man FILES=200 setzen.
VLM benutzt eine andere Architektur als die NETx-Shell. NETx hing sich in den INT 21h und simulierte dort DOS-Funktionen. Die VLMs hingegen sind das, was Microsoft als "Redirector Interface" bezeichnet.
Die VLMs benutzen eine Backend-Schnittstelle, unter der DOS sie aufruft. Da die VLMs von DOS aufgerufen werden, nutzen sie dieselben internen Strukturen wie DOS selbst. Das ist auch der Grund, weshalb in der CONFIG.SYS LASTDRIVE auf Z gesetzt werden muß.
Um sich gleichzeitig an zwei oder mehr Servern anmelden zu können, verwendet man den Befehl ATTACH. Dabei wird man zwar Benutzer auf diesem Server und belegt auch eine Lizenz, es wird jedoch kein Login Script ausgeführt.
Man kann das Attachen an weitere Server automatisieren, in dem man ATTACH <servername> im Login Script als internen Befehl (d.h. ohne #) ausführt.
Diese Variante hat den Vorteil, daß Benutzername und Paßwort weggelassen werden können und damit automatisch Name und Paßwort vom Hauptserver verwendet werden. Sollte der User auf dem anderen Server nicht existieren oder das Paßwort unterschiedlich sein, werden diese Angaben einfach abgefragt.
Hallo, Karl,
Ein DOS-Rechner mit Watch-Dog-Karte, der eine Klimaanlage regelt,
soll nach einem Reset selbstaetig ins Netz einloggen.
Den Usernamen kann ich mit dem Login-Batch uebergeben, aber das
Passwort des Klimarechners muss manuell eingegeben werden. ->
Klimaregelung haengt ! :(
echo dein_passwort|login dein_user
(Komisch, das steht gar nicht in der FAQ !??)
Ciao, Stefan
- timEd 1.10+
Copyright © by Stefan Braunstein (sbraunst@POBoxes.com)
Letzte Aktualisierung am 1. Dezember 1997