Proyecto Shell Remoto
Autor: John Sanabria - [Link]@[Link]
Resumen
En este proyecto el estudiante desarrollará una aplicación cliente/servidor la cual permite a un
usuario ejecutar comandos en un computador remoto. Esta aplicación cliente/servidor tiene
como cliente al usuario que ejecuta los comandos y el servidor es el computador remoto
donde se ejecutan los comandos.
En este trabajo el estudiante estará en capacidad de evidenciar sus habilidades relacionadas
con:
● El desarrollo de aplicaciones en C y la gestión de procesos.
● El desarrollo de aplicaciones en C bajo el modelo cliente/servidor.
● La exposición a través de un video del trabajo desarrollado.
● La construcción de texto escrito que describa cómo logró el desarrollo del proyecto y
cómo logró sobreponerse a posibles inconvenientes.
Tabla de contenido
Descripción del proyecto
Detalles de la operación del cliente y el servidor
Integrantes
Entregables
Fecha de entrega
Descripción del proyecto
Los estudiantes deben desarrollar una aplicación cliente/servidor que permita la ejecución de
comandos en un computador remoto. Observe la figura abajo. En esta figura al lado izquierdo
con la letra C se encuentra el proceso que nombraremos como cliente y al lado derecho de la
figura se encuentra el servidor el cual se representa con la letra S. La aplicación entonces
tiene como propósito el permitir que el cliente envíe comandos al servidor, estos comandos se
ejecutan en el servidor y la respuesta se visualiza al lado del cliente. Por ejemplo, el cliente
digita ls y esa cadena va al servidor, en el servidor se ejecuta el comando y la salida de ese
comando se envía devuelta al cliente y allí se muestra por pantalla.
El cliente y el servidor son procesos que corren en diferentes computadores. Estos procesos
tienen la particularidad de ser capaces de enviar y recibir mensajes a través de la red.
Detalles de la operación del cliente y el servidor
Como se mencionó anteriormente, cliente y servidor se comunican a través de la red y para
ello usan unos servicios que provee el sistema operativo llamados sockets. Los sockets son
las entidades a través de las cuales se pueden enviar y recibir mensajes de red.
Este aplicativo consiste en enviar comandos desde un computador que hace las veces de
cliente y se envían estos comandos a otro computador que hace las veces de servidor, el
comando se ejecuta en el servidor y la respuesta no se visualiza en el servidor sino que esta
salida se envía de vuelta a través de la red al cliente.
Entonces, el cliente antes de poder mandar cualquier comando debe conectarse al servidor a
través de un socket. Una vez creada la conexión con el servidor se deben llevar a cabo las
siguientes acciones:
1. El cliente lee del teclado el comando que el usuario quiere ejecutar en el servidor.
2. El cliente entonces crea un nuevo proceso el cual se encargará de enviar el comando
al servidor. Este comando está almacenado en una cadena de caracteres.
3. El servidor al recibir la cadena, crea un nuevo proceso el cual se encargará de ejecutar
el comando enviado por el cliente.
4. El servidor captura la respuesta del comando ejecutado y enviará la respuesta
capturada al cliente.
5. El cliente recibe la salida (representada en una cadena de caracteres) y la mostrará por
pantalla.
6. El cliente espera por un próximo comando a ejecutar en el servidor.
En la siguiente gráfica se muestran los pasos descritos anteriormente.
Para el usuario salir de la aplicación debe escribir la palabra salida y el aplicativo se debe
encargar de cerrar la conexión de red entre el cliente y el servidor.
El grupo deberá documentar el protocolo de comunicación que implementaron para llevar a
cabo la tarea descrita anteriormente. Con protocolo se hace referencia a la secuencia y el
orden de mensajes que se envían entre cliente y servidor.
Integrantes
Este proyecto se puede llevar a cabo en grupo de mínimo dos estudiantes y máximo cuatro
estudiantes.
Entregables
El proyecto se debe entregar en documento de la suite de aplicaciones de Google. No se
aceptarán archivos de la suite de Microsoft o PDFs.
El documento deberá indicar claramente el nombre de los integrantes y presentar una tabla de
contenido.
El documento deberá desarrollar un informe en el cual se presente como se llevó a cabo el
objetivo planteado en el proyecto. Así mismo es muy importante documentar los problemas,
desafíos que se presentaron durante el desarrollo del proyecto y mostrar cómo estos desafíos
se superaron. Indicar la metodología seguida para resolver los problemas y las fuentes de
información en las que se apoyaron es parte importante del informe. Se debe indicar también la
forma de trabajo y las responsabilidades de cada uno de los integrantes del grupo.
El documento deberá proveer enlaces a los recursos que sustentan el logro de los objetivos
planteados en el proyecto:
● Video en youtube, no superior a 10 minutos, y que sirva como una demostración de que
el proyecto funciona. Es importante que se evidencie también la participación de todos
los miembros del grupo en el video. Pueden dividirse la presentación del vídeo en
segmentos donde cada miembro del grupo haga su participación.
● Repositorio en GitHub, este repositorio tendrá la documentación técnica que presenta
los insumos que se usaron para lograr los objetivos planteados en el proyecto así como
el código fuente.
Fecha de entrega
Definida en Google Classroom.
Referencias
- Aplicación cliente/servidor en C1
1 Visitado el 2024/11/06