Capítulo 5: Secuencias de conexión
Las secuencias de conexión son conjuntos de comandos que se
ejecutan automáticamente al comenzar a trabajar. Son análogos
al AUTOEXEC.BAT del DOS. Bajo NetWare hay tres clases de
secuencias de conexión:
- secuencia de conexión por omisión (Default Login
Script)
La secuencia de conexión por omisión, es parte del
código del programa LOGIN.EXE situado en el directorio
SYS\LOGIN y no puede ser editada. Esta es la secuencia
creada por NetWare y que se ejecuta cada vez que se
arranca el server, hasta que se define un System Login
Script.
- secuencia de conexión del sistema (System Login Script)
Esta secuencia es la usada por el sistema y sus acciones
son comunes a todos los usuarios. La debe crear el
supervisor mediante SYSCON, y se la archiva en SYS:PUBLIC
con el nombre NET$LOG.DAT. Si LOGIN.EXE encuentra un
archivo NET$LOG.DAT en SYS:PUBLIC, en lugar de ejecutar
la secuencia de conexión por omisión, ejecuta la de
sistema.
- secuencia de conexión de cada usuario (User Login
Script)
Cada usuario puede tener su secuencia de conexión
propia, que complementa la del sistema. Estas secuencias
son creadas por el supervisor usando SYSCON y se guarda
con el nombre LOGIN en el directorio
SYS:MAIL\NombUsuario. Los usuarios que tengan el derecho
a cambiar su propia clave de ingreso pueden también
modificar su secuencia de conexión. Se ejecuta
automáticamente luego de haber ejecutado ya sea la
secuencia de conexión del sistema o la secuencia de
conexión por omisión.
La idea es crear un System Login Script muy completo y general, y
dejar en los User Login Script únicamente comandos que sean
específicos para los usuarios que los requieran. De esta forma
se facilita mucho el soporte del sistema.
Sin embargo, en caso de tratarse de una red con muchos usuarios,
(50 ó más) puede suceder que el System Login Script se vuelva
demasiado extenso, en ese caso habrá que utilizar también los
User Login Scripts.
Para modificar las secuencias de conexión, se recurre al
utilitario por menúes SYSCON. El System Login Script puede ser
alterado únicamente por el supervisor, por eso figura en el
submenú Supervisor Options. Cada usuario puede modificar su
Login Script entrando en el submenú User Information (si está
habilitado para hacerlo).
Las secuencias de conexión son archivos ASCII puro con las
siguientes restricciones:
- cada renglón debe comenzar con una instrucción.
- sólo puede haber una instrucción por renglón.
- una instrucción del DOS es válida pero debe precederse
del símbolo numeral (#).
- los comandos externos del NetWare también deben ser
precedidos por el #.
- un renglón no debe tener más de 150 caracteres.
Además de los comandos de NetWare y DOS, para potenciar las
secuencias de conexión se definen varios comandos y variables.
Uno de los principales usos de las variables es el de servir
junto con el comando IF.. THEN para la ejecución condicional de
parte de la secuencia.
Comandos para las secuencias de conexión:
- ATTACH (pegarse),, se usa para conectarse a otro server.
Puede ser ejecutada directamente desde la línea de
comandos. Sintaxis:
ATTACH server/login_name;password
Las opciones que no estén especificadas, ATTACH las
preguntan; es usual omitir la clave (password), para que
no figure por escrito y comprometa la seguridad.
- BREAK (romper), permite (ON) o no (OFF) romper una
secuencia de conexión con CTRL-C O CTRL-BREAK. Si bien
es parecida, no debe confundirse con la orden BREAK del
DOS que en NetWare se denomina DOS BREAK). Sintaxis:
BREAK ON
BREAK OFF
- COMSPEC (COMmand processor SPECted), indica dónde debe
buscarse al intérprete de comandos (casi siempre el
COMMAND.COM). El problema se plantea cuando:
- no está en el directorio desde el cual se
arrancó, hay que indicar dónde está el
COMMAND.COM
- si hay máquinas en la red corriendo distintas
versiones del DOS, las que requerirán distintas
versiones del COMMAND.COM guardadas en distintos
directorios.
- hay máquinas con MS-DOS y otras con DR-DOS,
mismo problema que en el punto anterior.
- hay máquinas con el Norton DOS (NDOS) como
intérprete de comandos, acá es más importante
aún pues el intérprete de comandos tiene otro
nombre.
El concepto es similar al SET COMSPEC del DOS.
Sintaxis:
COMSPEC = path (o search o
drive):nombre_del_intérprete
- DISPLAY (mostrar) y FDISPLAY (Filtered DISPLAY, mostrar
filtrando), sirven para mostrar el contenido de un
archivo de texto. La diferencia entre DISPLAY y FDISPLAY
es que DISPLAY muestra los archivos tal cual están y
FDISPLAY filtra los caracteres de control. DISPLAY
equivale a un TYPE bajo DOS. Sintaxis:
DISPLAY nombre_del_archivo
- DOS BREAK (romper del DOS), permite cortar la ejecución
de un comando DOS con CTRL-C ó CTRL-BREAK. Equivale a
BREAK (a secas) del DOS (pero no a BREAK del NetWare).
Sintaxis:
DOS BREAK ON
DOS BREAK OFF
- DOS SET (preparar del DOS) sirve para inicializar
variables del DOS, tanto del ambiente de trabajo
(environment) como de uso en archivos.BAT. En ambos
casos, el área de memoria donde se almacenan las
variables es el "environment", el cual puede
ampliarse mediante la instrucción SHELL (del DOS). Ej:
DOS SET PROMPT $P$G
define la forma del "prompt" , que es una variable
propia del DOS.
- DOS VERIFY (Verifique del DOS)
Se usa para que cada vez que se copie un archivo con
COPY, se verifique (ON) que quede bien copiado. NCOPY lo
hace siempre.
DOS VERIFY ON
DOS VERIFY OFF
- DRIVE:
Sirve para cambiar de unidad. La sintaxis es:
DRIVE x:
DRIVE *n:
ejemplos:
DRIVE H:
DRIVE *5:
Este último ejemplo cambia la unidad a la quinta, que
haya sido asignada previamente por el comando MAP. Notese
que el comando H: funciona bien desde la línea de
comandos pero debe ser precedido por la palabra clave
DRIVE dentro de una secuencia de conexión.
- EXIT (salida)
Se usa para terminar la ejecución de una secuencia de
conexión. Se asocia generalmente con IF...THEN. Acepta
dos sintaxis:
EXIT
EXIT "nombre_programa"
Mediante la primera forma, se sale a la línea de
comandos, la segunda sintaxis transfiere el control a
otro programa, o archivo batch.
- FIRE PHASERS (disparar "phasers")
Produce un sonido similar al del disparo de una
"pistola de rayos". Se usa en reemplazo del
BEEP del DOS. SIntaxis:
FIRE PHASERS cantidad_de_veces TIMES.
- IF..THEN (si..estonces)
Esta instrucción permite la ejecución condicional de
una parte de la secuencia de conexión. Acepta dos
variantes: el IF...THEN de una línea y el multilínea.
Sintaxis del de una línea:
IF condición THEN comando
Sólo si la condición es cierta (se cumple), entonces se
ejecuta el comando; ésta lógica se denomina "do if
true".
ej: IF LOGIN_NAME=ALE THEN EXIT
En este caso, si el nombre del usuario es ALE se sale de
la secuencia de conexión.
Sintaxis del multilínea:
IF condición THEN BEGIN
comando1
comando2
..
END
En este otro, el cumplimiento de la condición lleva a la
ejecución de los comandos escritos entre BEGIN (principio) y END
(fin).
Ej:
IF LOGIN_NAME = JUAN THEN BEGIN
FIRE PHASERS 3 TIMES
MAP H:=SYS:\PUBLIC\DATOS
END
La condición evaluada es los ejemplos anteriores es la igualdad,
pero hay otras posibles: <=,>=, <,> y # (distinto), las que a su vez
pueden vincularse mediante los operadores AND (y) y OR (o). Otra
condición posible es la pertenencia a grupos mediante las
construcciones "MEMBER OF" (miembro de) y "NOT
MEMBER OF". ej:
IF MEMBER OF "GRUPO1" OR MEMBER OF "GRUPO2"
THEN BEGIN
ACCIONES A EJECUTAR CONDICIONALMENTE
END
Por último, existe también la posibilidad de ejecución
condicional basada en la variable ERRORLEVEL (nivel de error).
Varios comandos suministran distintos valores de ERRORLEVEL
según la clase de error que se produjo al ejecutarlos. En todos
los casos, ERRORLEVEL = 0 implica ausencia de error. Sintaxis:
IF ERROR_LEVEL = "0" THEN comando
- INCLUDE (incluir)
Esta instrucción se usa para reemplazar su nombre por el
contenido de un archivo. De esta forma, un grupo de
instrucciones muy empleado puede ser guardado en un
archivo y usado en distintas secuencias de conexión
llamándolo mediante el INCLUDE. Su sintaxis es:
INCLUDE nombre_del_archivo
- MACHINE NAME (nombre de máquina)
Esta orden se usa para definir el nombre de máquina de
la estación de trabajo. Sintaxis:
MACHINE NAME = nombre_de_máquina
- MAP (mapa)
La instrucción MAP puede aceptar, aparte de las
variantes vistas en capítulos anteriores, dos opciones
frecuentemente empleadas en secuencias de conexión:
MAP DISPLAY OFF sirve para anular el eco en pantalla de
las asignaciones que se están efectuando en la secuencia
de conexión. Se la anula con MAP DISPLAY ON.
MAP ERRORS OFF suprime mensajes de error; cosa
conveniente si se los trata con un IF
"%ERROR_LEVEL" THEN. Para cancelar sus efectos,
se usa MAP ERRORS ON.
- PAUSE (pausa)
Como su nombre lo indica, la secuencia de conexión se
detiene en esta instrucción. Normalmente se emplea para
que el usuario lea algún mensaje en la pantalla. Se
reanuda presionando cualquier tecla.
Equivale en efectos a la tecla "Pause".
- PCCOMPATIBLE
Se usa con algunas máquinas para indicarle al NetWare
que la máquina es compatible con la IBM PC. Casi siempre
se escribe justo antes de EXIT. Los clones del IBM PC no
nnecesitan esta instrucción.
- REMARK (comentario)
REMARK permite incluir un comentario en la secuencia de
conexión. En principio, estos comentarios son para que
el autor de la secuencia de conexión documente su
trabajo. REMARK es una instrucción no ejecutable.
Sintaxis:
REMARK texto
REM texto
* texto
; texto
- WRITE (escribir)
Se emplea para poner en pantalla un mensaje de una
línea; para mensajes de varias líneas es más práctico
usar DISPLAY o FDISPLAY que varios WRITE seguidos.
Sintaxis:
WRITE "texto";identificador
WRITE "texto %IDENTIFICADOR"
El texto debe ir encomillado . Se aceptan algunos
caracteres especiales :
\n (de New line), es un salto de renglón.
\r (de carriage Return), para ir a la primera columna .
\" para incluir comillas como parte del texto.
\7 para emitir un pitido (el caracter ASCII nro. 7 es el
BEEP)
El identificador, es alguna de las variables que se
describen más adelante.
Ejemplo:
WRITE "Este es un mensaje simple"
WRITE "\n Este mensaje empieza en el renglón de
abajo"
WRITE "Bienvenido Sr. ";LOGIN_NAME
WRITE "Bienvenido Sr. %LOGIN_NAME al sistema"
Nótese que el identificador lleva un signo % cuando
está entre las comillas del texto, además debe estar
escrito obligatoriamente en mayúsculas.
Variables de identificación
Las variables de identificación, también llamadas
identificadores, se usan, tal cual se vió en las instrucciones
IF..ELSE y WRITE de las secuencias de conexión, y con algunos
comandos vistos en capítulos previos (por ej: MAP). Si una
variable de identificación se incluye dentro de un string (frase
encerrada entre comillas), se la debe escribir en mayúsculas y
precederla de un signo %; si está usada fuera de un string, el %
no va y las mayúsculas son opcionales. Las variables pueden
agruparse como siguen:
- Relacionadas con la hora:
- AM_PM: complementa a HOUR.
- GREETIN_TIME: según la hora define si es
"morning" (mañana),
"afternoon", (si es tarde) o
"evening" (bien tarde o noche). Suele
usarse con WRITE para mensajes de bienvenida
(greeting).
- HOUR: hora, en formato 1-12.
- HOUR24: hora, en formato 00-23
- MINUTE: minutos.
- SECOND: segundos.
- Relacionadas con la fecha:
- DAY: día del mes, 1-31.
- NDAY_OF_WEEK: número de día de la semana,
1(domingo)-7.
- DAY_OF_WEEK: nombre del día de la semana.
- MONTH: número de mes, 1-12.
- MONTH_NAME: nombre de mes.
- SHORT_YEAR: año, con dos cifras.
- YEAR: año, con cuatro cifras.
- Identificación propiamente dicha:
- FULL_NAME: nombre completo del usuario.
- LOGIN_NAME: nombre de conexión del usuario (el
que se tipea como respuesta al LOGIN)
- MACHINE: nombre de máquina completo (LONG
MACHINE NAME) de la estación. Surge del
SHELL.CFG.
- SMACHINE: nombre de máquina abreviado (SHORT
MACHINE NAME) de la estación. También surge del
SHELL.CFG.
- STATION: número de conexión de la estación, es
un número de 8 dígitos asignado a la estación
por el instalador.
- P_STATION: número de nodo (también llamado
físico) de la estación. En realidad es el
número de placa de red y consta de 12 dígitos
hexadecimales (48 bits). En las placas Ethernet y
Token Ring, está grabado en una ROM por el
fabricante de la placa de red, en las ARCnet se
pone con DIP switches.
- OS: nombre del sistema operativo (Operating
System) de la estación, ej: MS DOS.
- OS_VERSION: versión del sistema operativo de la
estación, ej: v5.0.
- Misceláneos:
- ERROR_LEVEL: nivel de error, 0 significa
"sin error".
- NEW_MAIL: "YES" indica que hay mensaje
en el directorio MAIL.
Debe tenerse en cuenta al armar mensajes que empleen
GREETIN_TIME, DAY_OF_WEEK y MONTH_NAME el idioma en el que salen.
Armado de menúes
Todos los menúes se ejecutan con el comando MENU (hasta la
versión 3.11 inclusive) , la sintaxis es: MENU nombre_menu.
El nombre_menu es el archivo que contiene la información sobre
la estructura del menú en forma de texto ASCII puro, su
extensión debe ser .MNU.
Para poder ejecutar MENU, es necesario contar, además de con el
programa MENU.EXE, con los archivos MENUPARZ.HLP, MENUPARZ.EXE ,
todos ellos en el directorio SYS:PUBLIC.
Para poder ejecutar un menú, deben poseerse los derechos R
(Read), F (File scan) y W (Write) en el directorio donde estén
los archivos antes mencionados (por omisión, el Public). El
derecho Write es necesario pues MENU crea dos archivos: GO.nnn y
RESTART.nnn (nnn es un número de 3 dífitos a partir de 001).
Para crear un menú personalizado, hay que contar con un editor
de texto ASCII y crear un archivo de texto que siga las
siguientes reglas:
- El nombre de un menú debe precederse de un signo %
- Las opciones se deben ubicar alineadas con el signo %.
Menú las lista en orden alfabético al imprimirlas en
pantalla, por eso se las precede con un número cuando se
las desea presentar en otro orden.
- Los comandos o programas o nombres de submenúes deben
estar indentados con respecto a los nombres de las
opciones. La indentación puede ser un espacio o una
tabulación.
- Después de la última opción del menú principal se
comenzará a describir el primer submenú, siguiendo
todas las reglas del principal.
ej:
%Menú Principal
1ra opción
acción1
2da opción
acción2
3ra opción
%variantes
4ta opción
acción4
%variantes
Variante 1
acción1
Variante 2
acción2
Variante 3
acción3
La primera fila puede tener un formato más eleborado, como por
ejemplo:
%Menu Principal, Fila, Columna, Paleta.
Fila y Columna son dos números que expresan las coordenadas del
extremo superior izquierdo del menú.
Si se omite, el menú sale centrado.
El parámetro Paleta es un número que identifica un conjunto de
colores con los que dibuja el menú y se muestra la opción
seleccionada. NetWare provee las paletas 0 al 4, el usuario puede
modificarlas o crear otras con el utilitario por menúes
COLORPAL, visto anteriormente.
- La paleta 0 se usa para listas, menúes y texto normal.
- La paleta 1 para cabeceras principales y fondos de
pantallas.
- La paleta 2 es usada en las pantallas de ayuda.
- La paleta 3 aparece en los mensajes de error.
- La paleta 4 se emplea para los menúes de salida y de
advertencia.
Se debe tener precaución al alterar las paletas, para que las
combinaciones de colores elegidas sean visibles en todas las
pantallas. Esta precaución corre especialmente para redes que
incluyen máquinas con monitores monocromáticos (tanto Hercules,
como CGA o VGA mono) y displays de cristal líquido (LCD). El
problema consiste en que hay combinaciones de colores que se
distinguen claramente en un monitor color pero no en los otros, y
hay otras que son muy buenas monitores monocromáticos pero dan
lugar a combinaciones insoportables en monitores a color.
El inconveniente que presentaba en versiones anteriores de
NetWare el programa de menú era que ocupaba una cantidad
considerable de memoria ram base (aproximadamente 90 Kb.) Este
inconveniente se solucionó en parte con la aparición de un
"upgrade" de dicho programa que necesita solamente 33
Kb. de memoria ram base. Igualmente este sistema ha sido
reemplazado a partir de la versión3.12 de NetWare y se lo llamó
NMENU. Para mantener compatibilidad con los menúes desarrollados
anteriormente, se provee una forma de migrar menúes antiguos al
sistema de menúes nuevo. De cualquier forma, generalmente los
supervisores de redes suelen manejarse con sistemas de menúes
provistos por otras empresas que además de consumir menor
memoria, proveen mayor cantidad de opciones y bloquean para los
usuarios la posibilidad de salir del menú sin salir de la red,
cosa muy buscada por supervisores que tienen como usuarios de red
a personas no especializadas en la materia. De esta forma se
evitan posibles problemas e inclusive que usuarios hagan pedidos
al service o al departamento de soporte técnico por no saber
cómo ingresar nuevamente en el menú. Entre los productos de
terceros podemos mencionar al Saber's Lan Menú (una porción de
este producto es la que se provee a tal fin a partir de NetWare
3.12, otros varios sistemas de menúes son desarrollados a medida
por los departamentos de sistemas y existen inclusive algunos
"shareware" de muy buen funcionamiento por precios
realmente ínfimos.