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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  FTP Client Python By Rune
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: FTP Client Python By Rune  (Leído 1,662 veces)
Runex

Desconectado Desconectado

Mensajes: 192


http://tutogramacion.blogspot.com


Ver Perfil WWW
FTP Client Python By Rune
« en: 17 Marzo 2012, 15:02 pm »

Posteo un programa que acabe hace un tiempo y quería mostrarlo, contribuyendo a la comunidad :).

Se trata de un cliente ftp, que permite investigar los directorios, subir y descargar archivos, sin interfaz gráfica pero considero, que sigue siendo un entorno bastante amigable :)

Aquí os dejo el código:
Código
  1. #!/usr/bin/env python
  2. import ftplib,os
  3.  
  4.  
  5. def darchivos(f): # Funcion encargada de descargar archivos del servidor
  6. eleccion = "SI"
  7.  
  8.  
  9. while eleccion != "NO" and eleccion == "SI":
  10. try:
  11. os.system("clear")
  12. print " [+] Panel de Descargas [+]\n"
  13. print "[+] Directorios y Archivos\n  "
  14. for x in f.nlst():
  15. print x
  16. print " \n  [/]Inserte el nombre del archivo a descargar"
  17. archivoserv = raw_input("Nombre>")
  18.  
  19. print "\n[+]Ahora inserte el nombre del archivo para guardar en su sistema"
  20. archivodir = raw_input("Nombre>")
  21. t = open(archivodir,"wb")
  22. print "Descargando..."
  23. f.retrbinary('RETR %s' %archivoserv,t.write)
  24. print "[+]!Descarga completada con exito!"
  25. print "[/] Quiere seguir descargando?"
  26. eleccion = raw_input("Si o No?")
  27. eleccion = eleccion.upper()
  28. if eleccion == 'NO':
  29. print "Pulse cualquier tecla para salir"
  30. raw_input()
  31. f.quit()
  32. f.close()
  33. if eleccion != 'NO' and eleccion != 'SI':
  34. print "[-] Eleccion no valida"
  35. raw_input()
  36. darchivos(f)
  37. except:
  38. print "[-]No se ha podido descargar el archivo, compruebe la insercion del nombre y la validez del archivo"
  39. raw_input()
  40. os.system("clear")
  41. for p in f.nlst():
  42. print p
  43. darchivos(f)
  44.  
  45.  
  46. def archivos(f): # Funcion encargada de subir archivos al servidor
  47.  
  48. eleccion = 'SI'
  49. while eleccion == 'SI' and eleccion != 'NO':
  50. try:
  51. os.system("clear")
  52. print " [+] Panel de Subidas [+]\n"
  53. print "[+] Directorios y Archivos\n  "
  54. for sp in f.nlst():
  55. print sp
  56. print "\n[+] Inserte el nombre del archivo a subir junto con su directorio"
  57. archivo_origen = raw_input("Nombre>")
  58. t = open(archivo_origen,'rb')
  59. except:
  60. print "[-] Error,el archivo no existe,retornando"
  61. raw_input()
  62. os.system("clear")
  63. archivos(f)
  64. print "\n[+] Inserte ahora el nombre que tomara el archivo en el servidor"
  65. archivo_destino = raw_input("Nombre>")
  66. try:
  67. f.storbinary('STOR %s' %archivo_destino,t)
  68. print "[+] Subida completada con exito!"
  69. print "[/] Quiere seguir descargando?"
  70. eleccion = raw_input("Si o No?")
  71. eleccion = eleccion.upper()
  72. if eleccion == 'NO':
  73. print "Pulse cualquier tecla para salir"
  74. raw_input()
  75. f.quit()
  76. f.close()
  77. if eleccion != 'NO' and eleccion != 'SI':
  78. print "[-] Eleccion no valida"
  79. raw_input()
  80. archivos(f)
  81.  
  82. f.quit()
  83. f.close()
  84. except:
  85. print "[-] No se ha podido subir el archivo, retornando"
  86. raw_input()
  87. os.system("clear")
  88. archivos(f)
  89.  
  90.  
  91. def mostrar_directorios(f): # Funcion que recorre los directorios del servidor
  92.  
  93. try:
  94. os.system("clear")
  95. print "[+] Directorios y Arhivos\n"
  96. for x in f.nlst():
  97. print x
  98. print "\n[/] Elija directorio"
  99. directorio = raw_input("Directorio>")
  100. f.cwd(directorio)
  101. os.system("clear")
  102. except:
  103. print "[-] El directorio introducido no es valido retornando"
  104. raw_input()
  105. os.system("clear")
  106. f.quit()
  107. f.close()
  108. main()
  109.  
  110. print "[+] Directorios y Archivos ",directorio,"\n\n"
  111. for x in f.nlst():
  112. print x
  113. print "\n[/] Desea investigar otro directorio?"
  114. eleccion = raw_input("Si o No?>")
  115. eleccion = eleccion.upper()
  116. if eleccion == 'SI':
  117. while eleccion == 'SI':
  118. try:
  119. print "[/] Elija Directorio:"
  120. directoriox = raw_input("Directorio>")
  121. f.cwd(directoriox)
  122. os.system("clear")
  123. print "[+] Directorios y Archivos  ",directoriox,"\n\n"
  124. for s in f.nlst():
  125. print s
  126. except:
  127. print "[-] El nombre introducido no existe o no es un directorio,retornando"
  128. raw_input()
  129. os.system("clear")
  130. main()
  131.  
  132. print "\n[/] Desea investigar otro directorio?"
  133. eleccion = raw_input("Si o No?>")
  134. eleccion = eleccion.upper()
  135. if eleccion == 'NO':
  136. print "\n[+] Que funcion quiere llevar a cabo?"
  137. print "--> Subir Archivos (Subir)"
  138. print "--> Descargar Archivos (Descargar)"
  139. eleccion3 = raw_input("Eleccion>")
  140. eleccion3 = eleccion3.upper()
  141. if eleccion3 == "SUBIR":
  142. archivos(f)
  143. elif eleccion3 == "DESCARGAR":
  144. darchivos(f)
  145. else:
  146. print "[-] El valor introducido no es valido"
  147. raw_input()
  148. os.system("clear")
  149. f.quit()
  150. f.close()
  151. main()
  152. elif eleccion != 'SI' and eleccion != 'NO':
  153. print "[-] No es una opcion valida, retornando"
  154. raw_input()
  155. os.system("clear")
  156. f.quit()
  157. f.close()
  158. main()
  159. elif eleccion == 'NO':
  160. print "\n[/] Que funcion quiere llevar a cabo?"
  161. print "--> Subir Archivos (Subir)"
  162. print "--> Descargar Archivos (Descargar)"
  163. eleccion3 = raw_input("Eleccion>")
  164. eleccion3 = eleccion3.upper()
  165. if eleccion3 == "SUBIR":
  166. archivos(f)
  167. elif eleccion3 == "DESCARGAR":
  168. darchivos(f)
  169. else:
  170. print "[-] El valor introducido no es valido"
  171. raw_input()
  172. os.system("clear")
  173. f.quit()
  174. f.close()
  175. main()
  176.  
  177. else:
  178. print "[-] El valor introducido no es valido"
  179. raw_input()
  180. os.system("clear")
  181. f.quit()
  182. f.close()
  183. main()
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191. def entrarFtp(web): # Funcion encargada de conectar al servidor dando user y pass
  192. try:
  193. f = ftplib.FTP(web)
  194. print "\n"+f.getwelcome()
  195. except:
  196.  
  197. print "[-] El servidor es incorrecto, retornando"
  198. raw_input()
  199. os.system("clear")
  200. main()
  201. try:
  202. user = raw_input("User>")
  203. pasd = raw_input("Pass>")
  204. f.login(user,pasd)
  205. mostrar_directorios(f)
  206.  
  207.  
  208. except:
  209.  
  210. print "[-] El user o la pass es incorrecto"
  211. raw_input()
  212. os.system("clear")
  213. f.quit()
  214. f.close()
  215. main()
  216.  
  217.  
  218.  
  219. def main(): # Funcion Principal Main
  220. print """
  221. _____ ______ ____          __ _     ____   ___ ____  ______
  222. |     |      |    \       /  ] |   |    | /  _]    \|      |
  223. |   __|      |  o  )      /  /| |    |  | /  [_|  _  |      |
  224. |  |_ |_|  |_|   _/      /  / | |___ |  ||    _]  |  |_|  |_|
  225. |   _]  |  | |  |       /   \_|     ||  ||   [_|  |  | |  |  
  226. |  |    |  | |  |       \    |     ||  ||     |  |  | |  |  
  227. |__|    |__| |__|        \____|_____|____|_____|__|__| |__|  
  228.  
  229.  
  230. ____  __ __      ____  __ __ ____    ___
  231. |    \|  |  |    |    \|  |  |    \ /  _]
  232. |  o  )  |  |    |  D  )  |  |  _  |/  [_
  233. |     |  ~  |    |    /|  |  |  |  |    _]
  234. |  O  |___, |    |    \|  :  |  |  |   [_
  235. |     |     |    |  .  \    |  |  |     |
  236. |_____|____/     |__|\_|\__,_|__|__|_____|
  237.      """
  238. print "[/]Introduzca el servidor ftp"
  239. web = raw_input("FTP>")
  240. entrarFtp(web)
  241.  
  242. main()
  243.  

Un saludo :)


« Última modificación: 17 Marzo 2012, 19:51 pm por Runex » En línea

"No renunciaría al bambú.
Nunca renuciaría a ti.
No te compares con otros" "El me dijo:
El bambú tenía un propósito diferente al del
helecho, sin embargo eran necesarios y
hacían del bosque un lugar hermoso".
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
(Python)Existen ventanas de entrada y salida de datos en python « 1 2 »
Scripting
tonilogar 11 15,585 Último mensaje 29 Noviembre 2009, 00:49 am
por tonilogar
[python]VideoTraining Aprende A Programar En Python desde 0 « 1 2 3 »
Scripting
juh 22 17,443 Último mensaje 16 Octubre 2010, 13:12 pm
por Pere Navarro
Deface Tools By Rune
Scripting
Runex 0 1,815 Último mensaje 17 Marzo 2012, 19:23 pm
por Runex
Wargames By Rune
Desarrollo Web
Runex 0 1,716 Último mensaje 2 Mayo 2012, 21:15 pm
por Runex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines