Euskal Encounter 13 join the family!
Last update: 29-Sep-2005

Competición de Scripting

Resultados

  • 1 inthenite
  • 2 jjosegutierrez
  • 3 tatai

Una vez que pase la party colgaremos los scripts ganadores en la web de la Euskal 13

Reglas

  • El concurso consistira en uno o varios retos que habra que realizr por medio de scripts
  • La competición es individual
  • Se permiten los lenguages: shell script, perl, python, php y tcl librerias inclusive (Si se utiliza alguna libreria especial habra que especificarlo cuando se entregue el/los script).
  • Si la solucion da problemas contactaremos con el autor.
  • El primer concursante en entregar un resultado correcto sera el ganador.
  • Si no se resuelve todo el reto al completo, gana quien mas haya resuelto.
  • En caso de empate se tendra en cuenta la calidad y eficacia del codigo.
  • Habra que subir los trabajos por ftp y al terminar el concurso estaran accesibles para descargar desde internet.

Responsable

Para cualquier comentario o duda, contactar con SeSoX (sesox at govannom dot org, Plaza AG18 ).

Premios

Enunciado del ejercicio de scripting

Si vais a participar en el concurso debeis enviar vuestros datos ( Usuario de la intranet ) al e-mail arriba indicado con el asunto "inscripción scripting"

La idea del programa es que se pueda visualizar informacion del sistema de ficheros proc, concretamente nos centraremos en los ficheros y directorios que hay en el directorio /proc/sys/net/ipv4/ y podremos tanto visualizar el contenido de esos ficheros como modificarlo.

Objetivo 1

El programa debe tener un prompt (tipo shell) a traves del cual podremos introducir una serie de comandos, si se introduce cualquier otra cosa, o "un comando no valido", el programa dara un error.

Los comandos que debemos implementar son los siguientes:

  • cd - Nos permite cambiar de directorio
  • help - Muestra los comandos disponibles
  • mch - Aplica todos los cambios realizados
  • mod - Permite modificar fichero de /proc/sys/net/ipv4/
  • sch - Muestra los cambios realizados
  • show - Muestra los contenidos de /proc/sys/net/ipv4/
  • quit - Salir del programa

Para llamar a los comandos tenemos que poder usar el nombre completo de dicho comando o una parte del comando, por ejemplo para ejecutar help podremos usar:

PFM> h
PFM> he
PFM> hel
o
PFM> help

Si se introduce la letra 's' o la 'm', como existen varios comandos que pueden ser ejecutados, habra que informar de esto al usuario, asi este introduzcira una segunda o tercera letra y asi no tengamos varios posibles comandos para ejecutar.

COMANDO CD ( objetivo 2 )

El comando cd para nuestro programa solo tiene q permitirnos cambiar entre los directorios que hay dentro de /proc/sys/net/ipv4/.... En ningun caso se tiene que poder ir mas abajo de ese directorio.

Si escribimos solo el comando 'cd', iremos al directorio /proc/sys/net/ipv4 y para bajar un directorio usaremos el comando 'cd ..' que tambien se podra usar para llegar asta el directorio /proc.../ipv4.

El directorio en el que estemos debera mostrarse en el prompt:

directorio /proc/sys/net/ipv4/netfilter Prompt: PFM:/netfilter>
directorio /proc/sys/net/ipv4/ Prompt: PFM>
directorio /proc/sys/net/ipv4/conf/eth0 Prompt: PFM:/conf/eth0>

COMANDO SHOW ( Objetivo 3 )

El comando show tendra que dar como resultado una tabla en la que se mostraran todos los ficheros y directorios del directorio /proc/sys/net/ipv4/, su valor y un ID tal y como se ve a continuacion:

PFM> show

El recuadro tendra que adaptarse a los tamaños de ficheros y valores y quedar solo 2 espacios mas largo que el nombre y valor mas largo. Por supuesto, todos los recuadros tendran que ser del mismo tamaño.

El numero de la izquierda sera un numero de 0 a x y los numeros tendran que ser de 3 cifras en todo caso con lo cual a los numeros de 1 o 2 cifras habra que añadirles uno o dos ceros delante (osease 001, 002....056, 057, 058...).

Cada vez que se muestren 15 registros, habra que parar y esperar a que el usuario pulse cualquier tecla para mostrar otros 15 registros o salir del comando show y mostrar el prompt otra vez si el usuario pulsa la tecla 'q'. En todo caso, sea cual sea la tecla que pulse el usuario, en pantalla no se tiene que mostrar nada. Como mucho podra mostrarse por nuestra parte un mensaje tipo ' -- MORE -- ' que no sera necesario incluir.

Tambien tenemos que poder llamar al comando 'show' pasandole parametros y habra 2 parametros posibles, numero (de 3 cifras) o nombre. El numero sera el ID q identifica a cada uno de los fichero y sino se podra usar directamente el nombre del fichero, en ese caso habra que mostrar solo la linea del fichero en concreto tal que asi:

PFM> show 059 (show tcp_syn_retries)

COMANDO MOD ( Objetivo 4 )

El comando mod, nos permitira modificar parametros de los ficheros por lo que habra que pasarle 2 parametros 1) nombre del fichero 2) valor y tras esto se mostrara una tabla igual que con el comando show mostrando el valor anterior de este fichero y el nuevo valor.

PFM> mod tcp_synack_retries 15


PFM>

Estos cambios no se realizaran asta que se ejecute el comando 'mch', con el comando 'mod' solo tendremos que almacenar los cambios introducidos para luego aplicarlos con el comando 'mch' o poder visualizarlos con el comando 'sch'.

Habra que tener en cuanta los parametros y en caso de que no sean correctos hay que avisar del error. Tambien hay que tener en cuanta que algunos ficheros tienen de valor varios numeros separados por espacios en blanco y por lo tanto se pasaran mas de 2 parametros pero solo hay q tener en cuanta el primero como nombre de fichero y los demas como valor para el fichero.

COMANDO SCH ( Objetivo 5 )

Al ejecutar este comando (sin parametros) nos mostrara todos los cambios que se han introducido usando el comando 'mod'. Estos cambios deberan mostrarse en una tabla como la siguiente:

PFM> sch

COMANDO MCH ( Objetivo 6 )

Al ejecutar este comando (sin parametros) tendremos que coger todos los cambios introducidos por el usuario y realizarlos. Habra que comprobar que los cambios en los ficheros se hayan realizado correctamente dando un mensaje para indicarlo o dando un mensaje de error en caso de que no hayamos podido realizar alguno de estos.

Tras ejecutar 'mch' si ejecutamos el comando 'sch', este tendra que indicar que no hay ningun cambio pendiente.

COMANDO QUIT ( Objetivo 7 )

Al ejecutarlo tendra que comprobar si hay algun cambio pendiente de realizar y en tal caso tendra que avisar al usuario de que hay cambios pendientes que no se han aplicado y darle la opcion de aplicar los cambios.

Euskaltel: batzen gaituena - lo que nos une

Sponsors

SPRI - Sociedad para la Promoción y Reconversión Industrial
BBK - Bilbao Bizkaia Kutxa
Bizkaiko Foru Aldundia - Diputación Foral de Bizkaia
GameGune: Euskal Encounter game competition
Euskalamiga Party System 1.2.4

Valid XHTML 1.0! Valid CSS!