elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [SOURCE] "Shell Remota" con Python con GUI (Tkinter)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [SOURCE] "Shell Remota" con Python con GUI (Tkinter)  (Leído 4,597 veces)
Shrick

Desconectado Desconectado

Mensajes: 259


Yo no se nada, sino ¿porque pregunto?


Ver Perfil
[SOURCE] "Shell Remota" con Python con GUI (Tkinter)
« en: 1 Enero 2009, 02:34 am »

Tras haber dejado un post sin ninguna respuesta  :-( , empece a buscar como un loco por Google haber como podia hacerlo y ya sabeis el dicho, si quieres, puedes, lo que he hecho esta vez, es crear un servidor socket hecho en python con algunas funciones que se ejecutaran según las ordenes que le demos, según parece, al crear un GUI con Tkinter y teniendo sockets, te ves en una encrucijada pues tenemos dos búcles el de los sockets, para mantener la comunicación y el de la ventana gráfica (root.mainloop()), asi que la solución obvia seria ejecutar una y después otra por cada ciclo, para ello es necesario el uso de thread, que he aprendido a nivel básico como funciona hace un rato :xD , del PDF, Python para todos, y como no tengo ni idea de clases en python lo he adaptado como he podido, y ello me ha obligado a tener que entenderlo.

Funcionamiento:

Simplemente es un servidor socket y un cliente GUI con socket que interactuan, desde el cliente vas mandando comandos y el servidor los ejecuta en la máquina en la que esta ejecutandose. Solo he puesto unos cuantos comando inútiles para ver si funcionaba, y si hace, bastante bien.

Los comandos en cuestión son:

mostrar_os -> Muestra el sistema operativo del servidor
cmd pause -> Pausa una consola en Windows
echo HolaM -> Muestra "Hola Mundo" en la consola.

Código Fuente:

server.py:
Código
  1. #!/usr/bin/python
  2.  
  3. import socket
  4. import os
  5.  
  6. s = socket.socket()
  7. s.bind(("localhost", 9999))
  8. s.listen(30)
  9.  
  10. sc, addr = s.accept()
  11.  
  12. sc.send("Bienvenido!")
  13.  
  14. while True:
  15. recibido = sc.recv(255)
  16. print "Recibido:", recibido
  17. if recibido == "quit":
  18. break
  19. if recibido == "mostrar_os":
  20. recibido = os.name
  21. if recibido == "cmd pause":
  22. os.system("pause")
  23. if recibido == "echo HolaM":
  24. os.system("echo \"Hola Mundo\"")
  25. sc.send(recibido)
  26.  
  27. print "adios"
  28.  
  29. sc.close()
  30. s.close()

client.py:
Código
  1. #!/usr/bin/python
  2.  
  3. from Tkinter import *
  4. import socket
  5. import threading
  6.  
  7. class App:
  8. def __init__(self, master):
  9. Texto = ""
  10. frame = Frame(master)
  11. frame.pack()
  12.  
  13. self.texto_chat = Text(frame)
  14. self.texto_envio = Entry(frame)
  15. self.boton_enviar = Button(frame, text="Enviar!", command=self.evento)
  16.  
  17. self.texto_chat.grid(row=1, column=1)
  18. self.texto_envio.grid(row=2, column=1)
  19. self.boton_enviar.grid(row=2, column=2,)
  20.  
  21. def evento(self):
  22. Texto = self.texto_envio.get()
  23. s.send(Texto)
  24. self.texto_chat.insert(END, "Cliente -> " + Texto + "\n", END)
  25.  
  26. root = Tk()
  27. application = App(root)
  28.  
  29. class socket_thread(threading.Thread):
  30. def __init__(self):
  31. threading.Thread.__init__(self)
  32.  
  33. def run(self):
  34. while True:
  35. mensaje = s.recv(255)
  36. print "Server -> " + mensaje
  37. application.texto_chat.insert(END, "Server -> " + mensaje + "\n", END)
  38. #time.sleep(2)
  39. if mensaje == "quit":
  40. self.salir
  41.  
  42. def salir():
  43. print "Saliendo..."
  44. s.close()
  45.  
  46. s = socket.socket()
  47. s.connect(("localhost", 9999))
  48.  
  49. sock = socket_thread()
  50. sock.start()
  51.  
  52. root.mainloop()

Espero que sirva de algo esto que hice ;)

Si me dejan ponerle licencia que sea zlib, para que pase a dominio público y no tengas que darme ni reconocimientos ni créditos, si lo usaras en tus aplicaciones tanto libres como comerciales.


En línea

Ubuntu User
Pascal (2008/2009)
C/C++ (2009/¿?)
8080 Assembler (2009/2010)
MIPS I Assembler (2010/¿?)

Todo lo que yo haga o diga esta bajo:



No pertenece ni a mi ni a nadie :P .
_carlos_

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Re: [SOURCE] "Shell Remota" con Python con GUI (Tkinter)
« Respuesta #1 en: 2 Enero 2009, 02:43 am »

No tengo idea de python, pero se ve bastante bueno el código, gracias por compartirlo, lo archivaré para cuando tenga tiempo de aprender python.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Solucionado][Python y TkInter] Problme con entries múltiples
Scripting
kerith 0 3,519 Último mensaje 12 Enero 2011, 15:41 pm
por kerith
[Python] Problema con "lista" y "while" en python
Scripting
sayion 5 8,256 Último mensaje 30 Mayo 2012, 20:38 pm
por sayion
Ayuda con Python, ftp y Tkinter
Scripting
Eirthur 1 4,190 Último mensaje 11 Mayo 2013, 03:56 am
por daryo
Rellenar una caja de tkinter "Entry" sin botones
Scripting
PUAROT 4 4,537 Último mensaje 14 Julio 2016, 00:28 am
por PUAROT
Error TKINTER: _tkinter.TclError: image "pyimage2" doesn't exist
Scripting
Xyzed 4 4,078 Último mensaje 30 Enero 2021, 14:37 pm
por Danielㅤ
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines