machines.dat
y un fichero conteniendo descripciones de tareas tasks.dat
.
El programa lanzará las tareas descritas en tasks.dat
en las máquinas enumeradas
en machines.dat
que estén operativas. Se asume que está habilitado el comando rsh
y que las máquinas comparten el sistema de archivos (están en NFS).
Desarrolle el programa de manera estructurada. Active el pragma use strict
para
evitar errores. Comienze cubriendo progresivamente los siguientes puntos:
ping
con la opción -c 1
para
limitar el número de paquetes de prueba a uno.
El comando ping
en ocasiones no termina. Repase las estrategias usadas en el capítulo
para finalizar la espera por el comando despues de un número de segundos especificado.
Cuando no se sobrepasa el tiempo límite, puede hacer uso de expresiones regulares
para detectar que la máquina está accesible. Cuando se sobrepasa, la rutina manejadora
puede abortar el proceso.
rsh
y del comando which
.
TASK
y un nombre lógico que es el nombre
de la tarea. Cada tarea se separa de la siguiente
por una línea en blanco. Cada campo del registro es una línea que comienza por
el nombre del campo, dos puntos (:
) y el valor del campo. Los campos permitidos son:
DIRECTORY
. Contiene el directorio en la máquina remota de trabajo de la tarea.
El valor es una cadena entre comillas simples.
ENV
que contiene la lista de parejas variable de entorno y su
valor, separadas por blancos. Estas variables de entorno se deberán modificar
antes de la ejecución de la tarea. Las variables y los valores son cadenas entre comillas simples.
STDOUT
que contiene el nombre del fichero
al que se desea redirigir la entrada estándar. Análogamente habrán campos STDIN
y STDERR
. Si STDIN
no existe se redefine a '/dev/null'
.
Elija valores por defecto para STDOUT
y STDERR
.
El valor de estos campos es una cadena entre comillas simples.
MACHINES
si existe es una expresión regular describiendo
las máquinas en las que esta tarea puede ejecutarse. Cada nombre de máquina
se delimita entre comillas simples.
COMMAND
conteniendo el nombre del comando a ejecutar.
El valor es una cadena entre comillas simples.
PARAMETERS
que contiene la lista de llamadas al programa.
Cada llamada se separa de la anterior mediante un punto y coma. Cada
parámetro va entre comillas simples.
COMMAND
. En una primera fase, asuma
que el campo COMMAND
es el único campo que existe en el fichero de tareas. Vaya añadiendo campos
posteriormente.
Sigue un ejemplo de fichero de tareas:
$ cat tasks.dat TASK listar ENV:'PATH /bin:/usr/bin' COMMAND:'ls' DIRECTORY:'~' STDOUT: 'listar.out.$machine' PARAMETERS: '-l';'-s' '-t' TASK ordenar COMMAND: 'sort' DIRECTORY: '~/lhp/procesos/practica/' STDOUT: 'ordenado.out.$machine' STDIN: 'aordenar' MACHINES: 'manis' 'timple'
y un ejemplo de fichero de máquinas:
$ cat machines.dat timple millo manis fonil