Libro Python Aplicado de Eugenia Bahit. GNU/Linux, ciencia de datos, y desarrollo web

Banner de Python Aplicado

Conexiones remotas (HTTP, FTP y SSH)


Cita con formato IEEE:
E. Bahit, "Conexiones remotas (HTTP, FTP y SSH)", in Python Aplicado, 4th ed., EBRC Publisher, 2022, pp. 133-140.

Cita con formato APA 7:
Bahit, E. (2022). Conexiones remotas (HTTP, FTP y SSH). In Python Aplicado (4th ed., pp. 133-140). EBRC Publisher.

Cita en línea:
(Bahit, 2022)

Python provee dos bibliotecas, http y ftplib, para efectuar conexiones mediante los protocolos HTTP/HTTPS y FTP, respectivamente. Esta sección se enfoca en conexiones FTP.
Ir al apartado sobre conecciones HTTP(S).

Conexiones remotas vía FTP

La biblioteca ftplib permite conexiones a través del protocolo FTP.

Para crear una instancia FTP, dispone de las clases FTP y FTP_TLS, la segunda, con soporte del protocolo TLS (evolución de SSL). Si bien estas clases, como parámetros opcionales, el host, el usuario y la clave (entre otros), a fin de obtener un mejor control sobre las operaciones, estos datos serán enviado mediante los métodos connect y login, que serán abarcados adelante.

from ftplib import FTP
ftp = FTP()

Para abrir la conexión se emplea el método connect, que como parámetros admite, entre otros, el host y el puerto:

ftp.connect('algunhost.com', 21)

De ser necesario establecer el modo pasivo, se dispone del método set_pasv:

ftp.set_pasv(True)

La autenticación se realiza mediante el método login, quien recibe por parámetros, usuario y contraseña, respectivamente:

ftp.login('algunusuario', 'clave')

Para cerrar una conexión puede utilizarse el método quit. Esto cierra la conexión de ambos lados siempre que el servidor lo soporte y no retorne un error. En caso de que así sea, se llamará al método close, el cual cierra la conexión unilateralmente.

ftp.quit()

Otros métodos disponibles se citan a continuación:

Métodos de la clase FTP de Python
Acción Método
Directorios
Listar directorios dir()
dir('ruta/a/listar')
Crear un directorio mkd('ruta/a/nuevo-dir')
Moverse a un directorio cwd('ruta/a/algun-dir')
Eliminar un directorio rmd('ruta/a/dir-a-borrar')
Obtener directorio actual pwd()
Archivos
Recuperar un archivo remoto retrbinary(
  'RETR origen',
  open('/ruta/destino', 'w').write)
Enviar un archivo local storbinary(
  'STOR destino/remoto.txt',
  open('/origen/local.txt', 'r'))
Eliminar un archivo delete('archivo/a/eliminar')
Renombrar (mover) un archivo rename('origen', 'destino')
Cuando los modos «w» y «r» aparecen en negritas, significa que para archivos binarios debe agregarse «b» al modo.

Solicitando la contraseña por línea de comandos estilo Linux

La biblioteca getpass permite solicitar mediante input, una contraseña al estilo GNU/Linux, para evitar tener que trabajar con la contraseña en crudo en el código fuente...