2010-10-12 14 views
6

Estoy tratando de crear una aplicación web que reciba información del sistema.Asesoramiento sobre qué idioma usar

Lo que esta aplicación debe hacer es escuchar lo que sucede cuando algunos scripts de shell se están ejecutando e informan el estado a través de la web.

Un ejemplo:

  • estoy copiando miles de registros con script de shell, y si bien esto se sigue ejecutando me gustaría pasar a la situación actual de la secuencia de comandos a la interfaz web. Desde el lado del script del shell, pude hacer un eco de algo así como "Los archivos están siendo copiados, por favor espere a que termine".

El uso del lenguaje de programación del lado de la carcasa que sería la forma más fácil de pasar este a la interfaz web? Tenía la intención de usar JSP/JAVA para la web.

¿Es esta la manera correcta de pensar en esto? Cada sugerencia es bienvenida

EDITAR

¿Podría algo así como http://nodejs.org/ ser útil para esto?

Respuesta

5

Yo usaría una tubería con nombre (FIFO) en su lugar. Simplemente escribe tu salida en la tubería y deja que la aplicación la lea. No estoy seguro de si hay alguna otra forma de obtener un sistema más en vivo que este.

Recomendaría Perl como el back-end.

EDIT:

canalizaciones con nombre son un tipo especial de archivos en UNIX. La abreviatura FIFO significa "Primero en entrar primero en salir". En LINUX Journal puedes encontrar un interesante read about named pipes.

Perl es un lenguaje de scripting muy poderoso con muchos módulos listos para usar que puedes encontrar en http://cpan.org. Puede encontrar algunas respuestas here sobre SO sobre cómo/dónde comenzar a aprender Perl.

+0

No tengo experiencia con el perl, estoy dispuesto a aprender, ¿puedes aclarar un poco tu respuesta? Tal vez proporcionar algunos enlaces – London

+0

@London: Editado mi respuesta con más información. –

0

Puede poner la salida del script de shell en algún almacenamiento en el servidor. Y use AJAX en la página web para sondear el servidor y obtener actualizaciones de ese almacenamiento a la página.

Si decide utilizar JSF para la creación de páginas web, puedo recomendar el componente "a4j: poll" de la biblioteca ajax2jsf. Es muy simple y directo. Una manera muy fácil de sondear el servidor desde la página web.

+0

¿cómo sabría si el almacenamiento en el servidor se cambia y tengo que pasar otra información al frente, enviando ajax peticiones cada pocos segundos? Quiero hacer esto lo más vivo posible – London

+0

@London, sí, puede enviar solicitudes AJAX cada pocos segundos con la frecuencia que necesita. –

+0

Esto no volverá a cargar toda la página. Solo la parte de la página se actualizará continuamente por Ajax –

2

La parte web de su aplicación puede leer fácilmente un archivo o una base de datos, por lo que solo necesita asegurarse de que los scripts de su shell están generando algo para que su código Java se actualice.

Por ejemplo, si ejecuta la secuencia de comandos shell como esto

./myscript.sh > mylog.log 

Luego, en el código Java (tenga en cuenta que no se debe tener la lógica en su JSP), se puede leer en el archivo para determinar el estado de la actualización y envía el resultado a su JSP.

Sería mejor leer los datos desde una base de datos, pero eso implicaría cambiar el script de shell para generar los datos en una base de datos.

+0

. Quería que las actualizaciones de scripts estuvieran lo más reales posible, no estoy seguro de cómo manejaré eso con el registro, cómo sabría si el script ha pasado a lo siguiente, debería leer el archivo de registro cada pocos segundos? – London

+0

Esa sería la forma en que lo haría. Si desea que la secuencia de comandos envíe datos a la página web, puede tener un programa Java ejecutándose en su servidor que verifique las actualizaciones de los archivos de registro y luego envíe una solicitud a su aplicación web (solicitud de servicio web, solicitud de socket o incluso actualice una base de datos y deje que su servidor consulte la base de datos a intervalos regulares) informándole sobre los cambios – Codemwnci

+0

Punto tomado +1 por ahora, gracias por su respuesta. Vere lo que otros dicen un poco más. – London

0

Escribir en el archivo de registro sería la solución más simple. Y en la programación, simple a menudo significa bueno.

Si realmente necesita un sistema muy rápido/en tiempo real, probablemente debería hacer de estos registros una base de datos.

En cuanto al idioma, utiliza lo que más te guste. Todos ellos admiten SQLite, incluido bash.

0

Si entiendo correctamente su pregunta, desea mostrar una página web en un equipo cliente que informe el estado de una tarea de larga ejecución en un equipo servidor. Si ese es el caso, entonces debes enfocarte en algo llamado AJAX IMO.

Por lo que vale la pena la implementación más simple y fácil de entender de AJAX que conozco es Apache Wicket.

Cuestiones relacionadas