FTP Client Python By Rune

Iniciado por Runex, 17 Marzo 2012, 15:02 PM

0 Miembros y 1 Visitante están viendo este tema.

Runex

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 (python) [Seleccionar]

#!/usr/bin/env python
import ftplib,os


def darchivos(f): # Funcion encargada de descargar archivos del servidor
eleccion = "SI"


while eleccion != "NO" and eleccion == "SI":
try:
os.system("clear")
print " [+] Panel de Descargas [+]\n"
print "[+] Directorios y Archivos\n  "
for x in f.nlst():
print x
print " \n  [/]Inserte el nombre del archivo a descargar"
archivoserv = raw_input("Nombre>")

print "\n[+]Ahora inserte el nombre del archivo para guardar en su sistema"
archivodir = raw_input("Nombre>")
t = open(archivodir,"wb")
print "Descargando..."
f.retrbinary('RETR %s' %archivoserv,t.write)
print "[+]!Descarga completada con exito!"
print "[/] Quiere seguir descargando?"
eleccion = raw_input("Si o No?")
eleccion = eleccion.upper()
if eleccion == 'NO':
print "Pulse cualquier tecla para salir"
raw_input()
f.quit()
f.close()
if eleccion != 'NO' and eleccion != 'SI':
print "[-] Eleccion no valida"
raw_input()
darchivos(f)
except:
print "[-]No se ha podido descargar el archivo, compruebe la insercion del nombre y la validez del archivo"
raw_input()
os.system("clear")
for p in f.nlst():
print p
darchivos(f)


def archivos(f): # Funcion encargada de subir archivos al servidor

eleccion = 'SI'
while eleccion == 'SI' and eleccion != 'NO':
try:
os.system("clear")
print " [+] Panel de Subidas [+]\n"
print "[+] Directorios y Archivos\n  "
for sp in f.nlst():
print sp
print "\n[+] Inserte el nombre del archivo a subir junto con su directorio"
archivo_origen = raw_input("Nombre>")
t = open(archivo_origen,'rb')
except:
print "[-] Error,el archivo no existe,retornando"
raw_input()
os.system("clear")
archivos(f)
print "\n[+] Inserte ahora el nombre que tomara el archivo en el servidor"
archivo_destino = raw_input("Nombre>")
try:
f.storbinary('STOR %s' %archivo_destino,t)
print "[+] Subida completada con exito!"
print "[/] Quiere seguir descargando?"
eleccion = raw_input("Si o No?")
eleccion = eleccion.upper()
if eleccion == 'NO':
print "Pulse cualquier tecla para salir"
raw_input()
f.quit()
f.close()
if eleccion != 'NO' and eleccion != 'SI':
print "[-] Eleccion no valida"
raw_input()
archivos(f)

f.quit()
f.close()
except:
print "[-] No se ha podido subir el archivo, retornando"
raw_input()
os.system("clear")
archivos(f)


def mostrar_directorios(f): # Funcion que recorre los directorios del servidor

try:
os.system("clear")
print "[+] Directorios y Arhivos\n"
for x in f.nlst():
print x
print "\n[/] Elija directorio"
directorio = raw_input("Directorio>")
f.cwd(directorio)
os.system("clear")
except:
print "[-] El directorio introducido no es valido retornando"
raw_input()
os.system("clear")
f.quit()
f.close()
main()

print "[+] Directorios y Archivos ",directorio,"\n\n"
for x in f.nlst():
print x
print "\n[/] Desea investigar otro directorio?"
eleccion = raw_input("Si o No?>")
eleccion = eleccion.upper()
if eleccion == 'SI':
while eleccion == 'SI':
try:
print "[/] Elija Directorio:"
directoriox = raw_input("Directorio>")
f.cwd(directoriox)
os.system("clear")
print "[+] Directorios y Archivos  ",directoriox,"\n\n"
for s in f.nlst():
print s
except:
print "[-] El nombre introducido no existe o no es un directorio,retornando"
raw_input()
os.system("clear")
main()

print "\n[/] Desea investigar otro directorio?"
eleccion = raw_input("Si o No?>")
eleccion = eleccion.upper()
if eleccion == 'NO':
print "\n[+] Que funcion quiere llevar a cabo?"
print "--> Subir Archivos (Subir)"
print "--> Descargar Archivos (Descargar)"
eleccion3 = raw_input("Eleccion>")
eleccion3 = eleccion3.upper()
if eleccion3 == "SUBIR":
archivos(f)
elif eleccion3 == "DESCARGAR":
darchivos(f)
else:
print "[-] El valor introducido no es valido"
raw_input()
os.system("clear")
f.quit()
f.close()
main()
elif eleccion != 'SI' and eleccion != 'NO':
print "[-] No es una opcion valida, retornando"
raw_input()
os.system("clear")
f.quit()
f.close()
main()
elif eleccion == 'NO':
print "\n[/] Que funcion quiere llevar a cabo?"
print "--> Subir Archivos (Subir)"
print "--> Descargar Archivos (Descargar)"
eleccion3 = raw_input("Eleccion>")
eleccion3 = eleccion3.upper()
if eleccion3 == "SUBIR":
archivos(f)
elif eleccion3 == "DESCARGAR":
darchivos(f)
else:
print "[-] El valor introducido no es valido"
raw_input()
os.system("clear")
f.quit()
f.close()
main()

else:
print "[-] El valor introducido no es valido"
raw_input()
os.system("clear")
f.quit()
f.close()
main()







def entrarFtp(web): # Funcion encargada de conectar al servidor dando user y pass
try:
f = ftplib.FTP(web)
print "\n"+f.getwelcome()
except:

print "[-] El servidor es incorrecto, retornando"
raw_input()
os.system("clear")
main()
try:
user = raw_input("User>")
pasd = raw_input("Pass>")
f.login(user,pasd)
mostrar_directorios(f)


except:

print "[-] El user o la pass es incorrecto"
raw_input()
os.system("clear")
f.quit()
f.close()
main()



def main(): # Funcion Principal Main
print """
_____ ______ ____          __ _     ____   ___ ____  ______
|     |      |    \        /  ] |   |    | /  _]    \|      |
|   __|      |  o  )      /  /| |    |  | /  [_|  _  |      |
|  |_ |_|  |_|   _/      /  / | |___ |  ||    _]  |  |_|  |_|
|   _]  |  | |  |       /   \_|     ||  ||   [_|  |  | |  |  
|  |    |  | |  |       \     |     ||  ||     |  |  | |  |  
|__|    |__| |__|        \____|_____|____|_____|__|__| |__|  
                                                           

____  __ __      ____  __ __ ____    ___
|    \|  |  |    |    \|  |  |    \  /  _]
|  o  )  |  |    |  D  )  |  |  _  |/  [_
|     |  ~  |    |    /|  |  |  |  |    _]
|  O  |___, |    |    \|  :  |  |  |   [_
|     |     |    |  .  \     |  |  |     |
|_____|____/     |__|\_|\__,_|__|__|_____|
     """
print "[/]Introduzca el servidor ftp"
web = raw_input("FTP>")
entrarFtp(web)

main()


Un saludo :)
"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".