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.
CAPITULO ANTERIOR DEL CURSO
PROXIMO CAPITULO DEL CURSO