Login skripty

Login skript

Login script je prostředek systému NetWare, který umožňuje nastavit požadované vlastnosti uživatelova síťového prostředí v okamžiku, kdy vstupuje do sítě. Jeho prostřednictvím lze totiž v rámci přihlašování uživatele do sítě automaticky provést předem zadané příkazy. Použitím login scriptu lze snadno připravit uživatelovo síťové prostředí tak, aby vyhovovalo jeho potřebám a přáním. Obvykle se tímto způsobem realizuje potřebné mapování diskových symbolů, přesměrování tiskových portů, nastavení systémových proměnných, spouštějí se používané uživatelské aplikace, přechází se do nabídkového systému apod. Login script je prováděn v rámci přihlašovacího procesu utilitou NetWare Login nebo příkazem LOGIN. Uplatňuje se také při přihlašování přes souborovou službu NetStorage.

Typy login scriptu

Poté, co uživatel v průběhu svého přihlašování do sítě zadá příslušné jméno a případně heslo, je autentizován. Následně se pro něj provádějí login scripty, které má definovány. V systému NetWare 6 jsou k dispozici následující 4 typy login scriptů:

Login script kontejnerového objektu (Container login script) se definuje pro kontejnerové objekty, konkrétně pro objekty typu Organization a Organizadonal Unit. Je-li pro daný kontejnerový objekt definován, provádí se pro všechny uživatele, kteří jsou v něm umístěni, a to jako první ze všech login scriptů, jež jsou pro přihlašujícího se uživatele realizovány. Do tohoto typu login scriptu je účelné ukládat takové příkazy, které mají být prováděny pro všechny uživatele definované v daném kontejnerovém objektu. Pro každého přihlašujícího se uživatele se provádí vždy jen jeden login script kontejnerového objektu, a sice toho, ve kterém je uživatel umístěn. Login scripty nadřazených kontejnerových objektů se tedy neuplatňují.

Profilový login script (profile login script) představuje v podstatě mezistupeň mezi login scriptem kontejnerového objektu a dále uvedeným uživatelským login scriptem. Definuje se pro objekty typu Profile a je prováděn jen pro uživatele, kteří jsou s těmito objekty spojeni. Slouží tedy k provádění požadovaných příkazů login scriptů jen pro vybrané skupiny uživatelů. Tito uživatelé přitom mohou být umístěni v různých místech stromu eDirectory (tzn. i ve více kontejnerových objektech). Každý uživatel však může mít připojen jen jeden objekt typu Profile. Má-li přihlašující se uživatel připojen objekt typu Profile, to znamená, že má definován profilový login script, provádí se mu bezprostředně po login scriptu kontejnerového objektu.

Uživatelský login script (user login script) se vytváří individuálně pro jednotlivé uživatele, to znamená pro objekty typu User. Je určen k provádění příkazů, které se týkají jen daného uživatele. Každému uživateli je možné definovat pouze jeden login script tohoto typu. Má-li jej přihlašující se uživatel definován, provádí se mu jako poslední ze všech jeho login scriptů.

Implicitní login script (default login script) zaujímá mezi zmiňovanými typy login scriptů poněkud zvláštní pozici. Pro přihlašující se uživatele je totiž prováděn automaticky, aniž by o to bylo požádáno, ale jen v případech, kdy nemají definován vlastní uživatelský login script. Implicitní login script není v systému přiřazen žádnému objektu, jeho obsah je předdefinován a nelze jej modifikovat. Realizuje mimo jiné jednu velmi významnou činnost, a sice zajišťuje mapování adresáře SYS:PUBLIC pro vyhledávání. V této souvislosti je třeba si uvědomovat, že po vytvoření uživatelského login scriptu může zmíněné nastavení chybět, takže je pak potřebné zajišťovat je pro uživatele v jiném typu login scriptu explicitně. Provádění implicitního login scriptu lze zakázal příkazem NO_DEFAULT.

Login scripty jsou v systému uchovávány ve formě vlastností příslušných objektů eDirectory (tzn. objektů typu Organization, Organizational Unit, Profile a User). Běžní uživatelé mají standardně právo modifikovat jen svoje uživatelské login scripty. Stane-li se při přihlašování uživatele, že v rámci provádění login scriptů je například jeden diskový symbol mapován postupně různými příkazy na různé adresáře, uplatní se pochopitelně poslední provedený příkaz.

Příkazy login scriptu

Použití login scriptu má podobný charakter jako práce s velmi jednoduchým programovacím jazykem. Je v něm totiž k dispozici jistá množina příkazů a syntaktických pravidel, jejichž prostřednictvím se zadávají konkrétní požadavky. V souvislosti s pravidly syntaxe, která je potřeba dodržovat při zadávání příkazů login scriptu, je třeba uvést alespoň následující nejdůležitější požadavky:

Seznam možných příkazů

Write

Funkce: Výpis zprávy na obrazovku
Formát: WRITE "[text] [%proměnná]"" [;][proměnná]
Parametry:

  • text - text zprávy
  • proměnná - interní proměnná login scriptu

Příkaz WRITE zobrazuje zadanou zprávu na obrazovce pracovní stanice uživatele. Tato zpráva může být tvořena jednak zadaným textovým řetězcem uvedeným v parametru text, jednak aktuálním obsahem interní proměnné login scriptu definované pomocí parametru proměnná (viz dále). Jeho prostřednictvím lze tedy zobrazovat zprávy, jejichž obsah je závislý na aktuálních okolnostech. Pro spojení několika textových řetězců a interních proměnných do jedné zprávy (bez uzavírání proměnné do uvozovek) se umísťuje mezi text a proměnnou znak ; (středník). Pokud je v rámci login scriptu použito několik příkazů WRITE, bude text každého z nich zobrazen na zvláštním řádku. Je-li požadováno, aby tyto texty byly zobrazeny jako souvislá zpráva na jednom řádkuje třeba každý z těchto příkazů kromě posledního zakončit středníkem.

Zadávané textové řetězce mohou obsahovat následující řídicí znaky:

  • \r - návrat vozíku (carriage return)
  • \n - nový řádek
  • \“ - zobrazení znaku uvozovky
  • \7 - pípnutí

Mimo středníku lze použít při vytváření složených řetězců ještě i následující dodatečné znaky, a to v uvedených významech:

  • */ % - násobit, dělil, modulo
  • - + - odečíst, přičíst
  • » « = posuv doprava, doleva

Příklad:
Uživateli bude při přihlašování do sítě zobrazen text složený s částí „Pracujete na serveru“, jméno aktuálního serveru, "přihlášen jako" a přihlašovací jméno.

WRITE "Pracujete na serveru "; FILE_SERVER;" přihlášen jako LOGIN_NAME

Interní proměnné login scriptu

Pro login script udržuje systém NetWare jisté systémové proměnné, takzvané interní proměnné login scriptu. Uživatelé je pak mohou využívat prostřednictvím některých příkazů. Při jejich používání je třeba dodržovat následující zásady:

  • Je-li identifikátor proměnné uveden v uvozovkách, je třeba jej zadat velkými písmeny a opatřit prefixem %. (např. WRITE „%P_STATION“).
  • Pokud není identifikátor proměnné uveden v uvozovkách, zmíněný prefix % se obvykle nepoužívá.
  • Prefix % se pro identifikátor proměnné nepoužívá ani v rámci příkazu IF...THEN (např. IF LOGIN_NAME=“KVrana“ THEN...).
  • V příkazu MAP se prefix % používá i přesto, že identifikátor proměnné není v uvozovkách (např. MAP K:=VOLl:USERS\%LOGIN_NAME).

V následujícím přehledu jsou interní proměnné login scriptu rozděleny do několika skupin podle toho, kterých oblastí se týkají.

Proměnné uchovávající datum

  • DAY - pořadové číslo dne v měsíci (01-31);
  • DAY_OF_WEEK - den v týdnu vyjádřený slovem (Monday, Tuesday,...);
  • MONTH - pořadové číslo měsíce v roce (01-12);
  • MONTH_NAME - měsíc vyjádřený slovem (January, February,...);
  • NDAY_OF_WEEK - pořadové číslo dne v týdnu (1-7, neděle=l);
  • SHORT_YEAR - rok vyjádřený posledními dvěma ciframi (např. 01);
  • YEAR - rok vyjádřený v plném formátu (např. 2001).

Proměnné uchovávající čas

  • AM_PM - indikace první nebo druhé poloviny dne (am/pm);
  • GREETING_TIME - denní čas vyjádřený slovem (morning, aftemoon,...);
  • HOUR - hodina (1-12);
  • HOUR24 - hodina (00-23);
  • MINUTE - minuta (00-59);
  • SECOND - sekunda (00-59).

A další, které lze dohledat v dokumentaci. Mezi ně patří proměnné týkající se uživatele, pracovní stanice, sítě, NetWare Mobile, DOSu, vlastností objektů a ostatních.

IF...THEN

Funkce: Podmíněný příkaz
Formát: IF podmínka THEN příkaz1 [ELSE příkaz2] [END]
Parametry:

  • Podmínka - vyhodnocovaná podmínka
  • Příkaz1 - příkaz provedený při splnění podmínky
  • Přikaz2 - příkaz provedený při nesplnění podmínky

Příkaz IF...THEN umožňuje realizovat v rámci login skriptu podmíněné příkazy, to znamená provádět některé příkazy jen za určitých okolností. Tyto podmíněné příkazy testují podmínku zadanou parametrem podmínka a podle výsledku tohoto testu provádějí příslušné příkazy. Pokud je zadaná podmínka splněna, provede se příkaz definovaný parametrem přikaz1. Když splněna není, záleží na tom, zda je uveden nepovinný parametr příkaz2. Je-li použit, provede se příkaz, který je v něm zadán, jinak se pokračuje přechodem na následující příkazy login skriptu.

V parametru podmínka může být použit jednoduchý nebo složený podmínkový výraz. Jednoduchý podmínkový výraz je zpravidla reprezentován dvěma operandy a jedním operátorem (např. K < "5"). Složený podmínkový výraz se vytváří z několika jednoduchých výrazů použitím spojovacích členů AND (logický součin) a OR (logický součet).

Jako operandy zmíněných podmínek je možné použít konkrétní zadané hodnoty, interní proměnné login skriptu, případně parametry uvedené při zadání příkazu LOGIN nebo v přihlašovacím okně (např. „%2“). V roli operátorů lze užívat následující symboly:

  • = - rovno
  • <> - nerovno
  • > - větší než
  • < - menší než
  • >= - větší než nebo rovno
  • <= - menší než nebo rovno

V rámci příkazu IF...THEN je potřeba dodržovat následující doporučení:

  • Operandy použité v podmínkách, jež mají formu konkrétních hodnot, se zadávají v uvozovkách.
  • Při porovnávání operandů v podmínkách se předpokládá, že se jedná o znaky, nikoli numerické hodnoty (tzn. např. 21 je pak vyhodnoceno jako větší než 100). Numerického porovnání lze dosáhnout pomocí klíčového slova VALUE.
  • Klíčová slova IF, ELSE a END musí být uvedena na různých řádcích.
  • Každý příkaz WRITE, který je součástí příkazu IF...THEN, musí být uveden na samostatném řádku.
  • V rámci příkazu IF...THEN lze použít další takový příkaz, a to až do maximální úrovně deseti vnoření.
  • Příkaz GOTO nesmí být použit ke skoku dovnitř vnořených příkazů IF...THEN ani ven.
  • Pokud příkaz IF...THEN zabírá více než jeden řádek, musí být ukončen slovem END.
IF DAY_OF_WEEK-"MONDAY" THEN WRITE "Přeji příjemný začátek týdne!"
ELSE
WRITE "Přeji příjemný pracovní den!"
END

Uvedený příkaz IF...THEN bude uživatele vítat každé pondělí při přihlašování do sítě textem uvedeným v prvním z příkazů WRITE a další dny jim potom bude zobrazovat text daný druhým z příkazů WRITE.

Last Login Time

Funkce: Zobrazení informace o čase předchozího přihlášení
Formát: LASTLOGINTIME

Příkaz LASTLOGINTIME zobrazuje čas posledního přihlášení do sítě, jež bylo pod tímto uživatelským jménem provedeno. Při jeho použití si mohou uživatelé jednoduše kontrolovat, zda se jejich jménem nehlásí do sítě i někdo jiný (např. nepovolaná osoba).

MAP

Funkce: Mapování symbolů disků
Formát: MAP [volba] [symbol:=cesta] [\symbol:=cesta]...
Parametry:

  • volba - volba ovlivňující funkci příkazu (viz dále)
  • symbol - mapovaný symbol disku
  • cesta - logický disk, adresář nebo objekt typu Directory Map

Příkaz MAP provádí v rámci login scriptu mapování symbolů disků (drive mapping), případně mapování disků pro vyhledávání (search drive mapping). Je obdobou příkazové utility MAP a v login scriptech je hojně používán.
Mapovaný symbol disku se zadává parametrem symbol. Může jím být symbol disku (např. G:), pořadové číslo síťového disku (např. *2:) nebo symbol disku pro vyhledávání (např. S4:). Na co má být daný symbol mapován, se uvádí v parametru cesta. V něm lze použít jméno logického disku, specifikaci síťového adresáře nebo jméno objektu typu Directory Map. V rámci jednoho příkazu MAP použitého v login scriptu je možné zadat i více než jedinou dvojici symbol:=cesta, přičemž k jejich oddělení pak slouží středník.
Příklady:

MAP L:=FS1/VOL1:

Symbol L: bude mapován na logický disk VOL1 umístěný na serveru FS1.

MAP *2:=SYS:PUBLIC;*3:=VOL1:WORK

Druhý síťový disk bude mapován na adresář SYS:PUBLIC a třetí na VOL1:WORK.

Pause

Funkce: Pozastavení vykonávání login scriptu
Formát: PAUSE

Příkaz PAUSE pozastavuje provádění login scriptu. Přitom se také vypisuje na obrazovku dané pracovní stanice zpráva „Strike any key when ready...“. Pokračování v další činnosti se dosáhne stiskem kterékoli klávesy (mimo Shift apod.). Uvedený příkaz se používá například bezprostředně po příkazech, které vypisují text, aby si uživatel mohl text pohodlně přečíst.