Ejercicio 4, Practicando sockets.

Hola a tod@s, bueno, en el último tutorial vimos algo muy interesante, los sockets, bien, ya que esto es algo que a la gente le cuesta asimilar y necesita práctica aún, voy a proponer un ejercicio, este ya es mas complejo.



Se trata de una shell remota, es decir, un terminal (o consola en windows) remoto, no es tan complicado como parece, en realidad es sencillo, tenéis todos los conocimientos para hacerlo, solo tenéis que saber que para hacer una llamada al sistema, se usa la función "system" del módulo "os", es decir, si queremos hacer un "echo hola mundo", en el terminal de linux o en la consola de windows desde python, escribiríamos:

import os
os.system("echo hola mundo")

Y ya esta, simplemente os faltaba ese detalle importante, con eso y con todo lo aprendido en el resto de tutoriales, deberíais ser capaces de escribir ese código, bueno, un saludo a tod@s y espero vuestros códigos.

16 comentarios:

Dr Coloso dijo...

¿No entendi, en el codigo del cliente tengo que mandar un comando al servidor para que ejecute una Consola que diga "Hola mundo"?

Francisco Dominguez Lerma dijo...

Si, exacto Dr Coloso, en vez de un "print" se usa la llamada al sistema, y el contenido de esta llamada al sistema es lo que envía el cliente.

Saludos.

Dr Coloso dijo...

O sea desde el cliente mando por ejemplo la string "manuelito" y en el servidor hago un comprobacion que si me mandan "manuelito"
Ejecuto desde el servidor os.system("echo Hola Mundo")

Francisco Dominguez Lerma dijo...

No, mejor aún, desde el cliente mando por ejemplo: "echo hola mundo" y en el servidor se ejecuta, voy a darte una pista, sería así:

send(raw_input("escribe el comando"))

y en el servidor

os.system(mi_socket.recv())

Ya no te puedo dar mas pistas jaja.

Saludos.

Dr Coloso dijo...

Ahh Ok cuando salen mas lecciones?

Dan dijo...

¿y esto para que vale?
porque parece un print

Dr Coloso dijo...

Que parte?

Francisco Dominguez Lerma dijo...

Dan, sirve, para enviar comandos a la consola o al terminal de otro pc, he usado la palabra "echo" que es como un print en batch y en bash, pero tan sólo es un ejemplo, con una shell remota digamos que se puede enviar cualquier comando al otro pc, gestionar archivos, apagarlo... cualquier cosa, un saludo.

Francisco Dominguez Lerma dijo...

Dr Coloso, se que os prometí que escribiría de forma diaria, pero he pillado un resfriado malísimo, y ahora que es verano (al menos en mi pais) estoy fatal, con fiebre, dolores..., cuando se me pase prometo volver a retomar el blog, un saludo.

Dr Coloso dijo...

Que te mejores Francisco!
Cuales van a ser los temas a tocar, proximamente. Asi voy preparando los ejemplos.

Dan dijo...

que te mejores

Francisco Dominguez Lerma dijo...

Gracias Dan.

Francisco Dominguez Lerma dijo...

Gracias Dr Coloso, lo próximo de lo que escribiré tratará sobre unos módulos muy interesantes para enviar peticiones http, como urllib y urllib2.

ass dijo...

mi nombre es camilo y soy de colombia, primero que todo queria agradecerte francisco por el estupendo trabajo que has realizado con tu blog, me ha sido de gran ayuda,tambien disculparme por la pregunta tan fuera de tiempo que voy a hacerte respecto a este tema,ya que solo hace poco descubri tu web, mi duda es la siguiente: como debo configurar el programa para que el resultado de los comandos que ejecuto no se vean solo en el servidor, si no tambien en el cliente. gracias por tu atencion

Tuus dijo...

Vaya con la pista... jejejeje.

Una cosita, cuando dices:

--------------------------
...windows desde python, escribiríamos:

import os
system("echo hola mundo")

-------------------------

la ultima linea es
os.system("echo hola mundo")

verdad?


Bueno un saludo y muchas gracias por los tutos.




Francisco Dominguez Lerma dijo...

Cierto Tuus, llevas razón, se me pasó, gracias.

Un saludo.